Trang ChínhCalendarGalleryTrợ giúpTìm kiếmThành viênNhómĐăng kýĐăng NhậpTin tức
Latest topics
» chuyên cung cấp máy ép thủy lực 1m x 1m6 giá rẻ
by vominhtien Sat Jan 09, 2016 9:29 am

» chuyên cung cấp máy ép chân không giá rẻ
by vominhtien Sat Jan 09, 2016 9:25 am

» chuyên cung cấp máy in epson 9600 giá rẻ
by vominhtien Sat Jan 09, 2016 9:11 am

» chuyên cung cấp máy in epson 9800 giá rẻ
by vominhtien Sat Jan 09, 2016 9:09 am

» chuyên cung cấp máy in epson 9900 giá rẻ
by vominhtien Sat Jan 09, 2016 9:07 am

» Nhận in gia công bảng tên nhân viên, thẻ sinh viên giá siêu rẻ
by huyenrio Mon Apr 20, 2015 10:24 am

» Cung cấp máy in hình theo yêu cầu lên dĩa sứ, dĩa nhựa
by huyenrio Mon Apr 20, 2015 10:22 am

» bán máy ép hình ảnh lên ly
by huyenrio Sat Mar 28, 2015 4:14 pm

» cung cấp máy ép hình ảnh lên áo vải
by huyenrio Sat Mar 28, 2015 4:13 pm

» máy ép nhiệt hình ảnh lên mặt phẳng kích thước 40 x 60cm
by vominhtien Sat Sep 13, 2014 3:11 pm

» máy ép nhiệt hình ảnh lên vải kích thước 60x80cm
by vominhtien Sat Sep 13, 2014 3:10 pm

» giấy in nhiệt transfer cuộn giá siêu rẻ
by vominhtien Tue Sep 09, 2014 1:01 pm

» máy ép đĩa giá khuyến mãi
by vominhtien Tue Sep 09, 2014 1:00 pm

» máy ép hơi 40x60cm giá cực hót
by vominhtien Tue Sep 09, 2014 12:59 pm

» máy ép phẳng thủy lực 1mx1,6m
by vominhtien Wed Jun 04, 2014 2:56 pm

» máy ép thủy lực hơi 60x80 cm giá cực "Hot"
by vominhtien Wed Jun 04, 2014 2:54 pm

» máy in nhiệt epson pro 10000 giá khuyến mãi
by vominhtien Wed Jun 04, 2014 2:53 pm

» máy in chuyên dụng 4 màu ,6 màu khổ A4,A3,A0… giá hấp dẫn
by vominhtien Mon Dec 30, 2013 2:41 pm

» nhận in gia công lên mọi chất liệu làm quà tặng tết
by vominhtien Mon Dec 30, 2013 2:40 pm

» máy in nhiệt giá rẻ cuối năm
by vominhtien Mon Dec 30, 2013 2:37 pm

Đăng Nhập
Tên truy cập:
Mật khẩu:
Đăng nhập tự động mỗi khi truy cập: 
:: Quên mật khẩu
Top posters
final fantasy (1098)
 
vominhtien (347)
 
doicoluu (222)
 
Monitor (219)
 
Chuối Chúa (112)
 
Dao_Kid (88)
 
Ve Sầu (76)
 
trunglenhu (61)
 
genius.no3 (55)
 
Admin[MP] (38)
 
THOI TIET
Du bao thoi tiet - Thanh pho Da Nang
Poll
Statistics
Diễn Đàn hiện có 113 thành viên
Chúng ta cùng chào mừng thành viên mới đăng ký: huyenrio

Tổng số bài viết đã gửi vào diễn đàn là 2736 in 1143 subjects
Tìm kiếm
 
 

Display results as :
 
Rechercher Advanced Search
Thống Kê
Hiện có 4 người đang truy cập Diễn Đàn, gồm: 0 Thành viên, 0 Thành viên ẩn danh và 4 Khách viếng thăm

Không

Số người truy cập cùng lúc nhiều nhất là 14 người, vào ngày Fri Jan 08, 2010 12:14 am
April 2018
MonTueWedThuFriSatSun
      1
2345678
9101112131415
16171819202122
23242526272829
30      
CalendarCalendar
Keywords
Lượt truy cập

Share | 
 

 Danh sách liên kết đơn.

Go down 
Tác giảThông điệp
final fantasy
Admin
Admin
avatar

Nam Tổng số bài gửi : 1098
Age : 29
Đến từ : Đà Nẵng
Registration date : 04/06/2008

Bài gửiTiêu đề: Danh sách liên kết đơn.   Sun Nov 30, 2008 5:52 pm

Các thao tác trên danh sách liên kết đơn(single-link list)
1.Định nghĩa tổng quát
Code:

struct tq {
thtin_t phantu;
struc tq*tiep;
};
typedef struct tq tq_t;

2.Con trỏ tới 1 node
Code:

struct node {
int infor;
struct node *next;
};
typedef struct node *NODEPTR;

3.Cấp phát bộ nhớ cho 1 node
Code:

NODEPTR Getnode(void) {
NODEPTR p;
P = (NODEPTR) malloc(sizeof( struct node));
Return(p);
}

4.Giải phóng 1 node
Code:

NODEPTR Freenode( NODEPTR p){
free(p);
}

5.Thêm phần tử vào đỉnh danh sách
Code:

void Push_Top( NODEPTR *plist, int x) {
NODEPTR p;
p= Getnode();
p -> infor = x;
p ->next = *plist;
*plist = p;
}

6.Thêm node mới vào cuối danh sách
Code:

void Push_Bottom( NODEPTR *plist, int x) {
NODEPTR p, q;
p= Getnode(); //
p->infor = x;
q = *plist;
while (q-> next != NULL)
q = q -> next;

q -> next = p;
p ->next = NULL;
}

7.Thêm node mới vào giữa danh sách
Code:

void Push_Before( NODEPTR p, int x ){
NODEPTR q;
if (p->next==NULL)
Push_Bottom(p, x);
else {
q= Getnode();
q -> infor = x;
q-> next = p-> next;
p->next = q;
}
}

_________________
"·´`·.(*·.¸(`·.¸ ¸.·´)¸.·*).·´`·"
"* † * My "LoVe" FoReVeR * † *"
"·´¨*·.¸¸.*..^_^ Chi Yêu Mình Em ^_^..*.¸¸.·*¨."
"·´`·.(¸.·´(¸.·* *·.¸)`·.¸).·´`·"
Về Đầu Trang Go down
Xem lý lịch thành viên http://07t2.forum777.com
final fantasy
Admin
Admin
avatar

Nam Tổng số bài gửi : 1098
Age : 29
Đến từ : Đà Nẵng
Registration date : 04/06/2008

Bài gửiTiêu đề: Re: Danh sách liên kết đơn.   Sun Nov 30, 2008 5:53 pm

8.Xóa 1 node đầu danh sách
Code:

void Del_Top( NODEPTR *plist) {
NODEPTR p;
p = *plist;
if (p==NULL) return;
(*plist) = (*plist) -> next;
p-> next = NULL;
Freenode(p);
}

9.Xóa node cuối danh sách
Code:

void Del_Bottom(NODEPTR *plist) {
NODEPTR p, q;
if (*plist==NULL) return;
else if ( (*plist)->next==NULL))
Del_Top(plist);
else {
p = *plist;
while (p->next!=NULL){
q = p;
p = p->next;
}
// p lµ node cuèi danh s¸ch;
q->next =NULL;
Freenode(p);
}
}

10.Xóa node giữa danh sách
Code:

void Del_before(NODEPTR p){
NODEPTR q;
if (p->next==NULL) return;
q = p ->next;
p->next = q->next;
Freenode(q);
}

Ngoài ra các thao tác duyệt danh sách, tìm kiếm trên danh sách...

_________________
"·´`·.(*·.¸(`·.¸ ¸.·´)¸.·*).·´`·"
"* † * My "LoVe" FoReVeR * † *"
"·´¨*·.¸¸.*..^_^ Chi Yêu Mình Em ^_^..*.¸¸.·*¨."
"·´`·.(¸.·´(¸.·* *·.¸)`·.¸).·´`·"
Về Đầu Trang Go down
Xem lý lịch thành viên http://07t2.forum777.com
final fantasy
Admin
Admin
avatar

Nam Tổng số bài gửi : 1098
Age : 29
Đến từ : Đà Nẵng
Registration date : 04/06/2008

Bài gửiTiêu đề: Re: Danh sách liên kết đơn.   Sun Nov 30, 2008 5:53 pm

Ứng dụng của danh sách liên kết đơn
Chúng ta xét 1 ứng dụng đơn giản của danh sách liên kết đơn sau;
Chương trình quản lí sinh viên với dạng đơn giản chỉ gồm mã SV và họ tên
Code:

#include
#include
#include
#include
#include
#include
#include
#define TRUE 1
#define FALSE 0
typedef struct {
int masv;
char hoten[20];
} sinhvien;
typedef struct node{
sinhvien infor;
struct node *next;
} *NODEPTR;
void Initialize(NODEPTR *plist){
*plist=NULL;
}
NODEPTR Getnode(void){
NODEPTR p;
p=(NODEPTR) malloc(sizeof(struct node));
return(p);
}
void Freenode(NODEPTR p){
free(p);
}
int Emptynode(NODEPTR *plist){
if(*plist==NULL)
return(TRUE);
return(FALSE);
}
NODEPTR Inserttop(NODEPTR *plist, sinhvien x){
NODEPTR p;
p=Getnode();
p->infor=x;
if(Emptynode(plist)){
p->next=NULL;
*plist=p;
return(p);
}
p->next=*plist;
*plist=p;
return(p);
}
int Bottomnode(NODEPTR *plist){
int i; NODEPTR p;
if(Emptynode(plist))
return(-1);
p=*plist;i=0;
while(p!=NULL){
i=i+1;
p=p->next;
}
return(i);
}
NODEPTR Insertbottom(NODEPTR *plist, sinhvien x){
NODEPTR p, q;int n,i;
n=Bottomnode(plist);
if(n==-1){
Inserttop(plist,x);
return(*plist);
}
p=*plist;i=0;q=Getnode();q->infor=x;
while(i p=p->next;
i=i+1;
}
p->next=q;q->next=NULL;
delay(2000);return(q);
}
NODEPTR Insertafter(NODEPTR *plist, sinhvien x, int n){
NODEPTR p,q; int i;
if(n<0){
printf("\n Vi tri khong hop le");
delay(2000);return(NULL);
}
p=*plist;i=0;
while(p!=NULL && i i=i+1;
p=p->next;
}
if(p==NULL){
printf("\n Vi tri khong hop le");
delay(2000); return(NULL);
}
q=Getnode();q->infor=x;
q->next= p->next;
p->next=q;
return(q);
}
void Deltop(NODEPTR *plist){
NODEPTR p, q;
p=*plist;
if(Emptynode(plist)){
printf("\n Danh sach rong");
delay(2000); return;
}
q=p;p=p->next;*plist=p;
printf("\n Node bi loai bo");
printf("\n%-5d%-20s",q->infor.masv, q->infor.hoten);
delay(2000);Freenode(q);
}
void Delbottom(NODEPTR *plist){
NODEPTR p,q; int i,n;
n=Bottomnode(plist);
if(n==-1){
printf("\n Danh sach rong");
delay(2000); return;
}
if(n==1){
Deltop(plist);return;
}
p=*plist;i=0;
while(i p=p->next;
i=i+1;
}
q=p->next;p->next=NULL;
printf("\n Node duoc loai bo");
printf("\n %-5d%-20s",q->infor.masv,q->infor.hoten);
delay(2000); Freenode(q);
}
void Delcurrent(NODEPTR *plist, int n){
NODEPTR p,q; int i;
if(Emptynode(plist)){
printf("\n Danh sach rong");
delay(2000);return;
}
if(n==0){
Deltop(plist); return;
}
p=*plist; i=0;
while(p!=NULL && i i=i+1;
p=p->next;
}
if(p->next==NULL){
printf("\n Node khong hop le");
delay(2000); return;
}
q=p->next;p->next=q->next;
printf("\n Node duoc loai bo");
printf("\n %-5d%-20s",q->infor.masv, q->infor.hoten);
delay(2000); Freenode(q);
}
void Travenode(NODEPTR *plist){
NODEPTR p;
if(Emptynode(plist)){
printf("\n Danh sach rong");
delay(2000);return;
}
p=*plist;
while(p!=NULL){
printf("\n %-5d%-20s",p->infor.masv, p->infor.hoten);
p=p->next;
}
delay(2000);
}
void Sortnode(NODEPTR *plist){
NODEPTR p,q;sinhvien temp;
for(p=*plist; p!=NULL; p=p->next){
for(q=p->next; q!=NULL; q=q->next){
if(p->infor.masv>q->infor.masv){
temp=p->infor; p->infor=q->infor;
q->infor=temp;
}
}
}
printf("\n Danh sach duoc sap xep");
for(p=*plist; p!=NULL; p=p->next){
printf("\n %-5d%-20s",p->infor.masv,p->infor.hoten);
}
delay(2000);
}
void Searchnode(NODEPTR *plist, int masv){
NODEPTR p;
p=*plist;
while(p!=NULL && p->infor.masv!=masv)
p=p->next;
if(p==NULL)
printf("\n Node khong ton tai");
else {
printf("\n Node can tim");
printf("\n %-5d%-20s",p->infor.masv,p->infor.hoten);
}
delay(2000);
}

void Thuchien(void){
NODEPTR plist; sinhvien x,y;int vitri; char c;
Initialize(&plist);
do {
clrscr();
printf("\n THAO TAC VOI SINGLE LINK LIST");
printf("\n 1- Them node dau danh sach");
printf("\n 2- Them node cuoi danh sach");
printf("\n 3- Them node giua danh sach");
printf("\n 4- Loai bo node dau danh sach");
printf("\n 5- Loai bo node cuoi danh sach");
printf("\n 6- Loai node giua danh sach");
printf("\n 7- Duyet danh sach");
printf("\n 8- Sap xep danh sach");
printf("\n 9- Tim kiem danh sach");
printf("\n 0- Tro ve");
c=getch();
switch(c){
case '1':
printf("\n Ma sinh vien:");scanf("%d", &x.masv);
fflush(stdin); printf("\n Ho va ten:");gets(x.hoten);
Inserttop(&plist,x); break;
case '2':
printf("\n Ma sinh vien:");scanf("%d", &x.masv);
fflush(stdin); printf("\n Ho va ten:");gets(x.hoten);
Insertbottom(&plist,x); break;
case '3':
printf("\n Vi tri tren:"); scanf("%d",&vitri);
printf("\n Ma sinh vien:");scanf("%d", &x.masv);
fflush(stdin); printf("\n Ho va ten:");gets(x.hoten);
Insertafter(&plist,x,vitri-1); break;
case '4': Deltop(&plist);break;
case '5': Delbottom(&plist);break;
case '6':
fflush(stdin);printf("\n Vi tri loai bo:");
scanf("%d",&vitri);
Delcurrent(&plist,vitri-1);break;
case '7': Travenode(&plist); break;
case '8': Sortnode(&plist);break;
case '9':
fflush(stdin);printf("\n Ma sinh vien:");
scanf("%d",&vitri);
Searchnode(&plist, vitri);break;
}
} while(c!='0');
}
void main(void){
Thuchien();
}

_________________
"·´`·.(*·.¸(`·.¸ ¸.·´)¸.·*).·´`·"
"* † * My "LoVe" FoReVeR * † *"
"·´¨*·.¸¸.*..^_^ Chi Yêu Mình Em ^_^..*.¸¸.·*¨."
"·´`·.(¸.·´(¸.·* *·.¸)`·.¸).·´`·"
Về Đầu Trang Go down
Xem lý lịch thành viên http://07t2.forum777.com
doicoluu
Thiếu Tướng
Thiếu Tướng
avatar

Nam Tổng số bài gửi : 222
Age : 29
Đến từ : HỎA TINH
Registration date : 28/08/2008

Bài gửiTiêu đề: Re: Danh sách liên kết đơn.   Mon Dec 01, 2008 4:40 pm

anh ecmind ơi!
Anh lấy mấy bài dễ dễ ấy. chớ mấy bài ni đưa lên đây ko phải ai cũng hiểu hết đâu.
Tốt nhất là lấy bài cô Lệ cho mà giảng giải thế thì cả lớp mới hiểu được.ok!
Về Đầu Trang Go down
Xem lý lịch thành viên
Monitor
Admin
Admin
avatar

Nam Tổng số bài gửi : 219
Đến từ : Hue - Da Nang
Registration date : 05/06/2008

Bài gửiTiêu đề: Re: Danh sách liên kết đơn.   Mon Dec 01, 2008 7:31 pm

Mi đưa lên kiểu đó nhìn ko còn mệt nói gì đọc hiểu.

_________________
...The gioi bao la cho ta nhan ra
Mai mai ta la sinh linh nho be...


Về Đầu Trang Go down
Xem lý lịch thành viên
final fantasy
Admin
Admin
avatar

Nam Tổng số bài gửi : 1098
Age : 29
Đến từ : Đà Nẵng
Registration date : 04/06/2008

Bài gửiTiêu đề: Re: Danh sách liên kết đơn.   Mon Dec 01, 2008 8:15 pm

Bài mẫu mà!!!

_________________
"·´`·.(*·.¸(`·.¸ ¸.·´)¸.·*).·´`·"
"* † * My "LoVe" FoReVeR * † *"
"·´¨*·.¸¸.*..^_^ Chi Yêu Mình Em ^_^..*.¸¸.·*¨."
"·´`·.(¸.·´(¸.·* *·.¸)`·.¸).·´`·"
Về Đầu Trang Go down
Xem lý lịch thành viên http://07t2.forum777.com
Sponsored content




Bài gửiTiêu đề: Re: Danh sách liên kết đơn.   

Về Đầu Trang Go down
 
Danh sách liên kết đơn.
Về Đầu Trang 
Trang 1 trong tổng số 1 trang
 Similar topics
-
» Cần bán gấp đất gần KDC Đồng Danh đường nhựa tận cửa 6m giá chỉ 240tr/62m
» LikeWatch - Sự khác biệt từ các nhãn hiệu danh tiếng
» Những món quà sinh nhật cho bạn gái cung Kim ngưu
» Thơ Hàn Mặc Tử
» Chức danh xưa đi vào địa danh Việt Nam

Permissions in this forum:Bạn không có quyền trả lời bài viết
 :: Học tập :: Thảo luận về chuyện học (HK III) :: CTDL>-
Chuyển đến