Lập trình với C ++ - DANH SÁCH LIÊN KẾT ( MÓC NỐI)
Số trang: 5
Loại file: doc
Dung lượng: 37.50 KB
Lượt xem: 10
Lượt tải: 0
Xem trước 2 trang đầu tiên của tài liệu này:
Thông tin tài liệu:
Tài liệu tham khảo dàn cho giáo viên, sinh viên, kỹ thuật viên chuyên ngành lập trình - Giáo trình lập trình với C++.
Nội dung trích xuất từ tài liệu:
Lập trình với C ++ - DANH SÁCH LIÊN KẾT ( MÓC NỐI) CHƯƠNG9:DANHSÁCHLIÊNKẾT(MÓCNỐI)Danhsáchliênkết:Nếusửdụngmãngđểquảnlýdanhsáchsẽrấttốnkèmvàcứngnhắctrongthaotácăkhắcphục=danhsáchliênkết.Danhsáchliênkếtgồmcácphầntử.Mỗiphầntửcó2vùngchính:vùngdữliệuvàvùngliênkết.Vùngliênkếtlàmộthaynhiềucontrỏ,trỏđếncácphầntửtrướchoặcsaunótùythuộcvàoyêucầucủacôngviệc.Khaibáodanhsáchliênkết:TypedefstructKieudulieu {;Kiểudữliệu;}Kiểudữliệu;Dùngtypedefstructkieudulieuđịnhnghĩakiểudữliệumới.Trongkiểudữliệunàycó2phần,phầnđầutiênlàphầnkhaibáocáctrường,phầnthứ2làcáccontrỏ,trỏđếnchínhkiểudữliệuđó,dòngcuốicùnglàcầnthiếtđểcáccontrỏđượcphépkhaibáochínhlàkiểudữliệumàcáccontrỏđólàthànhphần.Vídụ:typedefstructsinhvien{charhoten[30];intdiem;structsinhvien*tiep;}sinhvien;sinhvien*head;/contrỏđặcbiệtluôntrỏtớiđầudanhsách*/Mỗimộtphầntửcómộtcontrỏ,trỏđếnphầntửtiếptheo.Riêngphầntửcuốicùngcontrỏsẽtrỏđếnmộtkiểuđặcbiệt:KiểuNULL(nghĩalàcontrỏđókhôngtrỏđếnmộtphầntửnàocả).Banđầucontrỏdanhsách(head)đượcgánbằngNULL.Ðểcấpphátbộnhớ,tacầnkiểmtraxemcóđủkhông(tránhrốiloạnchươngtrình)Vídụ:#definesizeof(sinhvien)sinhvien*svsv=NULL;if((sv=(sinhvien*)malloc(sizesv)==NULL) {printf(khôngđủbộnhớRAM ); getch(); return; }Hàmsizeof(kiểuphầntử)chokíchthướccủakiểuphầntửbằngbyte.svlàcontrỏphụcầnthiếtchocácthaotáctrongchươngtrình.sizesvcókíchthướcbằngvùngnhớmộtphầntử(nhờsửdụnghàmsizeof()).Cầngánsv=NULLđềphòngsinhvienđangtrỏvàomộtphầntửcủadanhsách.Khithêmvào,chươngtrìnhsẽtựđộngtìmvịtríthíchhợpcủaphầntửmới.DotrongngônngữCkhôngđịnhnghĩakiểustringnhưtrongPASCAL,nêncàndùnghàmsosánhstrcmp(st1,st2).Hàmnàychokếtquảkiểuintsaukhisosánhst1vàst2nhưsau:>0nếust1>st2.Cáctrườnghợpxảyrakhithêmmộtphầntửvàomộtdanhsách:+Nếuphầntửmớiởđầudanhsách,cầnsửalạicontrỏhead.+Nếuđãcóphầntửđó,phảilựachọnliệucóghiđèlênkhông?+Cáctrườnghợpkháccầnsửalạicontrỏnhưsau:Giảsửcầnchènphầntửmớivàogiữaphầntử1và2tacó:......Vídụ:Chươngtrìnhqủanlýsinhviêngồm:thêm,bớt,duyệtdanhsách,tìmkiếmphầntử/*********************Chươngtrìnhqủanlýsinhviên***********************/#include#include#include#include#includevoidtaomenu()voidthemsv();voidtimkiem();voidloaibo();voiddanhsach();voidvitrihv(charst[],intd);/*tìmvịtríhợplý*/voidlietke();#definesizesvsizeof(sinhvien)typedef(tructsinhvien) {charhoten[30]; intdiem; structsinhvien*tiep; }sinhvien; sinhvien*head; sinhvien*sv; voidmain() {clrscr(); gotoxy(1,12); printf(chươngtrìnhquảnlýdanhsáchsinhviên(DSLK) ); getch(); taomenu(); }/*kếtthúchàmmain()*/voidtaomenu() {charch; do {clrscr(); printf(thêmsinhviêntìmkiếmloạibỏliệtkêQuit ); ch=toupper(getch()); switch(ch) {caseI:themsv();break; caseI:timkiem();break; caseL;:loaibo();break; caseD:lietke();break; caseQ:exit(1);break; default:break; } }while(ch!=Q);}voidthemsv(){chartensv[30];intdiem; clrscr(); printf(thêmsinhviênvàodanhsách ); gotoxy(1,10);printf(họvàtên:);gets(tensv); printf(điểm:);scanf(%d,&diem); vitrihv(tensv,diem);}voidvitrihv(charst[])intd){sinhvien*find=NULL,*next=NULL;intkq;charch; sv=NULL; if((sv=(sinhvien*)malloc(sizesv))==NULL) {printf(khôngđủbộnhớ );getch();return} strcpy(svăhoten,st); svădiem=d;/*nếudanhsáchbanđầulàrỗng*/ if(head==NULL){head=sv;headătiep=NULL;} else{/*tìmvịtrímớicủaphầntửtrongdanhsách*/ find=head;next=find; while((find!=NULL)&&((kq=strcmp(findăhoten,svăhoten))diem=d; free(sv); return; }/*nếuphầntửthêmvàođầudanhsách*/ if(find==head) {svătiep=head;head=sv;} else{svătiep=find;nextătiep=sv;} }}voidtimkiem() {chartensv[30];intkq;clrscr(); printf(tênsinhviêncầntìm:);gets(tensv); if((tensv!=)&&(head1=NULL)) {sv=head; while(( ...
Nội dung trích xuất từ tài liệu:
Lập trình với C ++ - DANH SÁCH LIÊN KẾT ( MÓC NỐI) CHƯƠNG9:DANHSÁCHLIÊNKẾT(MÓCNỐI)Danhsáchliênkết:Nếusửdụngmãngđểquảnlýdanhsáchsẽrấttốnkèmvàcứngnhắctrongthaotácăkhắcphục=danhsáchliênkết.Danhsáchliênkếtgồmcácphầntử.Mỗiphầntửcó2vùngchính:vùngdữliệuvàvùngliênkết.Vùngliênkếtlàmộthaynhiềucontrỏ,trỏđếncácphầntửtrướchoặcsaunótùythuộcvàoyêucầucủacôngviệc.Khaibáodanhsáchliênkết:TypedefstructKieudulieu {;Kiểudữliệu;}Kiểudữliệu;Dùngtypedefstructkieudulieuđịnhnghĩakiểudữliệumới.Trongkiểudữliệunàycó2phần,phầnđầutiênlàphầnkhaibáocáctrường,phầnthứ2làcáccontrỏ,trỏđếnchínhkiểudữliệuđó,dòngcuốicùnglàcầnthiếtđểcáccontrỏđượcphépkhaibáochínhlàkiểudữliệumàcáccontrỏđólàthànhphần.Vídụ:typedefstructsinhvien{charhoten[30];intdiem;structsinhvien*tiep;}sinhvien;sinhvien*head;/contrỏđặcbiệtluôntrỏtớiđầudanhsách*/Mỗimộtphầntửcómộtcontrỏ,trỏđếnphầntửtiếptheo.Riêngphầntửcuốicùngcontrỏsẽtrỏđếnmộtkiểuđặcbiệt:KiểuNULL(nghĩalàcontrỏđókhôngtrỏđếnmộtphầntửnàocả).Banđầucontrỏdanhsách(head)đượcgánbằngNULL.Ðểcấpphátbộnhớ,tacầnkiểmtraxemcóđủkhông(tránhrốiloạnchươngtrình)Vídụ:#definesizeof(sinhvien)sinhvien*svsv=NULL;if((sv=(sinhvien*)malloc(sizesv)==NULL) {printf(khôngđủbộnhớRAM ); getch(); return; }Hàmsizeof(kiểuphầntử)chokíchthướccủakiểuphầntửbằngbyte.svlàcontrỏphụcầnthiếtchocácthaotáctrongchươngtrình.sizesvcókíchthướcbằngvùngnhớmộtphầntử(nhờsửdụnghàmsizeof()).Cầngánsv=NULLđềphòngsinhvienđangtrỏvàomộtphầntửcủadanhsách.Khithêmvào,chươngtrìnhsẽtựđộngtìmvịtríthíchhợpcủaphầntửmới.DotrongngônngữCkhôngđịnhnghĩakiểustringnhưtrongPASCAL,nêncàndùnghàmsosánhstrcmp(st1,st2).Hàmnàychokếtquảkiểuintsaukhisosánhst1vàst2nhưsau:>0nếust1>st2.Cáctrườnghợpxảyrakhithêmmộtphầntửvàomộtdanhsách:+Nếuphầntửmớiởđầudanhsách,cầnsửalạicontrỏhead.+Nếuđãcóphầntửđó,phảilựachọnliệucóghiđèlênkhông?+Cáctrườnghợpkháccầnsửalạicontrỏnhưsau:Giảsửcầnchènphầntửmớivàogiữaphầntử1và2tacó:......Vídụ:Chươngtrìnhqủanlýsinhviêngồm:thêm,bớt,duyệtdanhsách,tìmkiếmphầntử/*********************Chươngtrìnhqủanlýsinhviên***********************/#include#include#include#include#includevoidtaomenu()voidthemsv();voidtimkiem();voidloaibo();voiddanhsach();voidvitrihv(charst[],intd);/*tìmvịtríhợplý*/voidlietke();#definesizesvsizeof(sinhvien)typedef(tructsinhvien) {charhoten[30]; intdiem; structsinhvien*tiep; }sinhvien; sinhvien*head; sinhvien*sv; voidmain() {clrscr(); gotoxy(1,12); printf(chươngtrìnhquảnlýdanhsáchsinhviên(DSLK) ); getch(); taomenu(); }/*kếtthúchàmmain()*/voidtaomenu() {charch; do {clrscr(); printf(thêmsinhviêntìmkiếmloạibỏliệtkêQuit ); ch=toupper(getch()); switch(ch) {caseI:themsv();break; caseI:timkiem();break; caseL;:loaibo();break; caseD:lietke();break; caseQ:exit(1);break; default:break; } }while(ch!=Q);}voidthemsv(){chartensv[30];intdiem; clrscr(); printf(thêmsinhviênvàodanhsách ); gotoxy(1,10);printf(họvàtên:);gets(tensv); printf(điểm:);scanf(%d,&diem); vitrihv(tensv,diem);}voidvitrihv(charst[])intd){sinhvien*find=NULL,*next=NULL;intkq;charch; sv=NULL; if((sv=(sinhvien*)malloc(sizesv))==NULL) {printf(khôngđủbộnhớ );getch();return} strcpy(svăhoten,st); svădiem=d;/*nếudanhsáchbanđầulàrỗng*/ if(head==NULL){head=sv;headătiep=NULL;} else{/*tìmvịtrímớicủaphầntửtrongdanhsách*/ find=head;next=find; while((find!=NULL)&&((kq=strcmp(findăhoten,svăhoten))diem=d; free(sv); return; }/*nếuphầntửthêmvàođầudanhsách*/ if(find==head) {svătiep=head;head=sv;} else{svătiep=find;nextătiep=sv;} }}voidtimkiem() {chartensv[30];intkq;clrscr(); printf(tênsinhviêncầntìm:);gets(tensv); if((tensv!=)&&(head1=NULL)) {sv=head; while(( ...
Tìm kiếm theo từ khóa liên quan:
liên kết trong C lập trình C ngôn ngữ C tài liệu về C giáo trình lập trình CGợi ý tài liệu liên quan:
-
Hướng dẫn thực hành lập trình C trên Visual Studio
9 trang 124 0 0 -
Giáo trình Kỹ thuật lập trình C: Căn bản & nâng cao - Phần 1
202 trang 114 0 0 -
Giáo trình Lập trình C căn bản - HanoiAptech Computer Education Center
136 trang 112 0 0 -
Giáo trình Ngôn ngữ lập trình C căn bản
142 trang 95 0 0 -
Giáo trình Tin học đại cương: Phần 2 - Trần Đình Khang
118 trang 90 0 0 -
Program C Ansi Programming Embedded Systems in C and C++ phần 4
12 trang 83 0 0 -
101 thuật toán chương trình C: Phần 2
130 trang 83 0 0 -
91 trang 81 0 0
-
Lập trình C - Cấu trúc dữ Liệu
307 trang 70 0 0 -
Bài giảng Phát triển phần mềm mã nguồn mở: Lập trình C/Linux - Bùi Minh Quân
29 trang 67 0 0