動(dòng)態(tài)鏈表詳細(xì)講解_第1頁
動(dòng)態(tài)鏈表詳細(xì)講解_第2頁
動(dòng)態(tài)鏈表詳細(xì)講解_第3頁
免費(fèi)預(yù)覽已結(jié)束,剩余1頁可下載查看

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、鏈表我自我感覺是真的很好的.對于c語言的一些不同類型的數(shù)據(jù)是很方便處理的.它就像一個(gè)容器.容納著多種類型的數(shù)據(jù).至于這個(gè)我就不說什么了.只說說我們今天的主題是鏈表的建立,刪除和添加.至于靜態(tài)鏈表我就不說了.這個(gè)比較簡單.動(dòng)態(tài)的還是有點(diǎn)繞.我也是在網(wǎng)上找了半天找不到什么好的自己想要的效果.就自己寫了一段程序.我把該標(biāo)記的都標(biāo)記了.我相信你看了會(huì)有大的收獲的./*頭文件所需要的庫文件*/#include"iostream"#include"stdlib.h"#include"stdio.h"#include"iomanip&qu

2、ot;#defineLENsizeof(structstudent)usingnamespacestd;voidinput();structstudentintnumber;floatprice;structstudent*next;intn=0;/全局變量定義節(jié)點(diǎn)數(shù)/*創(chuàng)建鏈表總共有三個(gè)結(jié)構(gòu)體指針分別是*head,(頭指針標(biāo)記)*p1(動(dòng)態(tài)產(chǎn)生內(nèi)存空間指針),*p2(當(dāng)前鏈表的指針最后一個(gè)節(jié)點(diǎn))*/structstudent*creat()個(gè)空間個(gè)空間空。的頭到structstudent*head,*p1,*p2;head=NULL;/head返回是void*類型p1=p2=(structs

3、tudent*)malloc(LEN);/p1p2指向同一塊內(nèi)存空間即你申請的那input();/input函數(shù)接受輸入界面cin>>p1->number>>p1->price;/在申請的里邊輸入數(shù)據(jù)while(p1->number!=0)/結(jié)束標(biāo)記符數(shù)字0作為輸入結(jié)束的標(biāo)記n=n+1;/n計(jì)數(shù)器記錄你輸入記錄的個(gè)數(shù)if(n=1)/第一個(gè)節(jié)點(diǎn)head=p1;/如果是第一個(gè)節(jié)點(diǎn)那么就直接將其內(nèi)容寫進(jìn)去elsep2->next=p1;/否則即不是第一個(gè)節(jié)點(diǎn),那么將指針p1賦值p2->nextp2=p1;/p2移動(dòng)到當(dāng)前位置p1=(structs

4、tudent*)malloc(LEN);/重新為p1申請空間cout<<setw(35)<<"輸入編號"<<setw(10)<<"輸入成績"<<endl;cin>>p1->number>>p1->price;/繼續(xù)輸入看是不是輸入結(jié)束標(biāo)記0了p2->next=NULL;/如果輸入結(jié)束可以將本鏈表的指針域即p2所在位置賦值為return(head);/*下邊是打印部分由于上邊創(chuàng)建部分返回的是head結(jié)構(gòu)體指針,他是你生成鏈表所以在打印時(shí)他應(yīng)該作為參數(shù),所以

5、在打印中有一個(gè)指針。他的作用大家也可以猜了吧就是接受你的參數(shù)*/voidshow(structstudent*head)structstudent*p;p=head;/將參數(shù)結(jié)構(gòu)體指針head給另一個(gè)結(jié)構(gòu)體指針pif(head!=NULL)/如果為空head是空指針即不指向任何地方所以此處不能寫成head->next;無意義cout<<setw(50)<<"總共有"<<n<<"條記錄"<<endl;/輸出記錄總共的條數(shù)cout<<setw(50)<<"正在

6、輸出結(jié)果"<<endl;while(p!=NULL)/因?yàn)槿绻麨榭説ead是空指針?biāo)韵雽?yīng)的p也是空指針即不指向任何地方cout<<setw(50)<<"編號為"<<p->number<<"成績"<<p->price<<endl;p=p->next;/順序移動(dòng)指針else/否則和上邊的if對應(yīng)鏈表為空的情況cout<<setw(50)<<"此鏈表為空,沒有輸出的結(jié)果。"<<endl;/*

7、添加指針函數(shù)中參數(shù)是(你建立的head和你新建的stu)*/structstudent*addorder(structstudent*head,structstudent*stu)/*總共有三個(gè)結(jié)構(gòu)體指針指針p1作為頭指針的作用在函數(shù)總作用指針p2作為你生成的添加的指針*/structstudent*p1,*p2;p1=head;p2=stu;if(p1!=NULL)/即添加的鏈表在添加之前不是空指針while(p1->next!=NULL)/開始尋找知道你尋找到他的指針域?yàn)榭誴1=p1->next;/指針p1尋找自己的指針域中存儲(chǔ)地址地方n=n+1;p1->next=p2;

8、/將你產(chǎn)生的節(jié)點(diǎn)指針p2接到p2后邊p2->next=NULL;else/添加之前是空n=n+1;cout<<setw(40)<<"你的原來鏈表為空鏈表"<<endl;head=p2;/把你產(chǎn)生的節(jié)點(diǎn)給了headp2->next=NULL;return(head);/*刪除節(jié)點(diǎn)有兩個(gè)參數(shù)一個(gè)數(shù)指針head另一個(gè)是你要?jiǎng)h除的標(biāo)志num還是有兩個(gè)指針*/structstudent*del(structstudent*head,intnum)structstudent*p1,*p2;/指針p2指向找到的前一個(gè)指針p1=head;if

9、(head!=NULL)/此鏈表不為空while(p1->number!=num&&p1->next!=NULL)/順序查找鏈表結(jié)構(gòu)p2=p1;p1=p1->next;if(p1->number=num)cout<<setw(50)<<"找到刪除結(jié)果刪除的記錄為"<<endl;cout<<setw(50)<<"編號為"<<p1->number<<"成績"<<p1->price<<

10、;endl;n=n-1;if(p1->next=NULL)cout<<setw(50)<<"你要?jiǎng)h除的是的是最后一條記錄"<<endl;p2->next=NULL;cout<<setw(50)<<"編號為"<<p1->number<<"成績"<<p1->price<<endl;elsep2->next=p1->next;else/此處是沒有找到節(jié)點(diǎn)cout<<setw(50)<

11、;<"沒有找到要?jiǎng)h除的節(jié)點(diǎn)。"<<endl;else/此處為鏈表head為空時(shí)cout<<setw(50)<<"你要?jiǎng)h除的鏈表為空不能進(jìn)行刪除操作。"<<endl;return(head);"<<endl;"<<endl;voidinput()cout<<setw(50)<<cout<<setw(50)<<"*輸入你要輸入的記錄。*"<<endl;cout<<setw

12、(50)<<cout<<setw(50)<<H*"<<endl;cout<<endl;cout<<setw(35)<<"輸入編號"<<setw(10)<<"輸入成績"<<endl;intmain()structstudent*head,*p;intnum;head=creat();show(head);cout<<endl;"<<endl;"<<endl;"<<endl;cout<<setw(50)<<"輸入你要?jiǎng)h除的節(jié)點(diǎn)cin>>num;head=del(head,num

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論