Danh mục

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    
Hoai.2512

Phí lưu trữ: miễn phí Tải xuống file đầy đủ (5 trang) 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(( ...

Tài liệu được xem nhiều: