單鏈表插入和刪除_第1頁
單鏈表插入和刪除_第2頁
單鏈表插入和刪除_第3頁
單鏈表插入和刪除_第4頁
單鏈表插入和刪除_第5頁
免費預(yù)覽已結(jié)束,剩余1頁可下載查看

下載本文檔

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

文檔簡介

1、實驗題目:單鏈表的插入和刪除實驗?zāi)康模毫私夂驼莆站€性表的邏輯結(jié)構(gòu)和鏈?zhǔn)酱鎯Y(jié)構(gòu),掌握單鏈表的基本算法及相關(guān)的時間性能分析。實驗要求:建立一個數(shù)據(jù)域定義為字符串的單鏈表,在鏈表中不允許有重復(fù)的字符串;根據(jù)輸入的字符串,先找到相應(yīng)的結(jié)點,后刪除之。實驗主要步驟:1.程序代碼#includestdio.h#includestring.h#includestdlib.h定義結(jié)點結(jié)點的數(shù)據(jù)域為字符串結(jié)點的指針域/自定義LinkList單鏈表類型/=主函數(shù)=ListNode*LocateNode(LinkListhead,char*key)(ListNode*p=head-next;/從開始結(jié)點比較whi

2、le(p&strcmp(p-data,key)!=0)/直至Up為NULL或p-data為key止p=p-next;/掃描下一個結(jié)點returnp;/若p=NULL則查找失敗,否則p指向找到的值為key的結(jié)點/=用尾插入法建立帶頭結(jié)點的單鏈表=LinkListCreatListRI(void)(char*ch=newchar();LinkListhead=(LinkList)malloc(sizeof(ListNode);/生成頭結(jié)點ListNode*s,*r,*pp;r=head;r-next=NULL;單鏈表的插入和刪除實驗日志#includectype.htypedefstruc

3、tnode/(chardata10;/structnode*next;/ListNode;typedefListNode*LinkList;s=(ListNode*)malloc(sizeof(ListNode);strcpy(s-data,ch);r-next=s;r=s;r-next=NULL;printf(Input#toend);printf(PleaseinputNode_data:);scanf(%s,ch);returnhead;/返回頭指針/=按值查找結(jié)點,找到則返回該結(jié)點的位置,否則返回NULL=voidDeleteList(LinkListhead,char*key)pri

4、ntf(positionerror);exit(0);while(q-next!=p)/pq=q-next;r=q-next;q-next=r-next;free(r);/voidprintlist(LinkListhead)ListNode*p=head-next;/while(p)printf(%s,p-data);p=p-next;printf(n);ListNode*p,*r,*q=head;p=LocateNode(head,key);/if(p=NULL)/按key值查找結(jié)點的若沒有找到結(jié)點,退出/打印鏈表printf(Input#toend);/printf(Pleaseinpu

5、tNode_data:);scanf(%s,ch);/while(strcmp(ch,#)!=0)pp=LocateNode(head,ch);/if(pp=NULL)/輸入#代表輸入結(jié)束輸入各結(jié)點的字符串按值查找結(jié)點,返回結(jié)點指針沒有重復(fù)的字符串,插入到鏈表中/刪除帶頭結(jié)點的單鏈表中的指定結(jié)點為要刪除的結(jié)點,q為p的前結(jié)點釋放結(jié)點從開始結(jié)點打印voidDeleteAll(LinkListhead)(ListNode*p=head,*r;while(p-next)r=p-next;free(p);p=r;)free(p);)voidmain()char*ch=newchar();char*nu

6、m=newchar();LinkListhead;head=CreatListR1();/printlist(head);/printf(Deletenode(y/n):);/scanf(%s,num);if(strcmp(num,y)=0|strcmp(num,Y)=0)printf(PleaseinputDelete_data:);scanf(%s,ch);/輸入要刪除的字符串DeleteList(head,ch);printlist(head);)DeleteAll(head);/刪除所有結(jié)點,釋放內(nèi)存)2.運行:) :刪除所有結(jié)點,釋放空間用尾插入法建立單鏈表,返回頭指針遍歷鏈表輸出其

7、值輸入y或n去選擇是否刪除結(jié)點C:DOCUMENTSANDSETTINGSADMINISTRATORifiDebugxeaInputtoendPleaseinputNodedata:danInputIttoendFleaseinputNode_data=LianInpint#toendFICASE:inputNQd.c_da.tA:biaoInputtttooindPleaseinputHDde_data1nputittoendPleaseinputNode_data:canInput#toendFleaseinputNode_data:xiInputstt匕口endFleaseinputda

8、naliain.biaoSfcmg,canxi.DBLetenodePleaseinwCDelete.data-danIlanPbiaoPgeng.c3n.xi,Pressanvkeytocointinuc3.附加功能的程序及主程序的代碼(增加插入結(jié)點的功能):intInsert(ListNode*head)/theinsertfunction(ListNode*in,*p,*q;intwh;printf(inputtheinsertnode:);in=(ListNode*)malloc(sizeof(ListNode);in-next=NULL;p=(ListNode*)malloc(siz

9、eof(ListNode);p-next=NULL;q=(ListNode*)malloc(sizeof(ListNode);q-next=NULL;if(!in)return0;scanf(%s,in-data);printf(inputtheplacewhereyouwanttoinsertyoudata:);scanf(%d,&wh);for(p=head;wh0;p=p-next,wh-);q=p-next;p-next=in;in-next=q;return1;voidmain()(char*ch=newchar();char*num=newchar();LinkListhe

10、ad;head=CreatListR1();/用尾插入法建立單鏈表,返回頭指針運行結(jié)果:=CADDeumentsandSettingsAdministratorDebugCpp1.exeB1InputInputtotoendendPleasePleaseinputinputNude,Nude, _data_data:s)ius)iuInputNtotoendendPleasePleaseinputinputNode.Node.IJuInputInputtttotoendendPleasePleaseinputinputNode.Node. _lata_lata:jiejieInputInput

11、tttotoendendPleasePleaseinputinputNodeNode_data_data:gouigouiInputInput耳totoendendPleasePleaseinputinputNodeNode_ata_ata:genggengInputInputatotoendendPleasePleaseinputinputNodeNode_data_data:cancanInputInputwtotoendendPleasePleaseinputinputNadeNade_dlata_dlata:3ci3ciInputHtotoendendFlenseFlenseinput

12、inputNodeNode二#ju.ju.JieJie i i卓gougou聚areng.areng.cm力4xDeletenodeDeletenodeinputtheinsertnodeinputtheinsertnode:shiyanshiyaninputtheplacewhepeyinputtheplacewhepey口uwanttoinsertyou.datauwanttoinsertyou.data:4 4shu,ju,jie,9shu,ju,jie,9口UPshiyan,geng,can,xi,shiyan,geng,can,xi,PressdfiykeytocantinuePressdfiykeytocantinue實驗結(jié)果:1 .輸入數(shù)據(jù)(dan,lian,biao,geng,can,xi)2 .得相應(yīng)鏈表3 .刪除節(jié)點(dan)成功刪除4 .加入節(jié)點(shiyan)成功插入心得體會:這是數(shù)據(jù)結(jié)構(gòu)的第一堂實驗課,通過這次上機操作,使自己對單鏈表的一些內(nèi)容有了更加深入了解,此試驗開始有部分錯誤,經(jīng)調(diào)試后實現(xiàn)了題設(shè)實驗內(nèi)容。并在此基礎(chǔ)上增加了printlist(head);/printf(Deletenode(y/n):);/遍歷鏈表輸出其值輸入y或n去選擇是否刪除結(jié)點scanf(%s,num)

溫馨提示

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

評論

0/150

提交評論