版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
單鏈表試驗(yàn)匯報(bào)試驗(yàn)?zāi)康呐c規(guī)定1、實(shí)現(xiàn)單鏈表的建立;2、掌握單鏈表的插入、刪除和查找運(yùn)算;3、純熟進(jìn)行C語(yǔ)言源程序的編輯調(diào)試。試驗(yàn)內(nèi)容(1)建立帶表頭結(jié)點(diǎn)的單鏈表;首先輸入結(jié)束標(biāo)志,然後建立循環(huán)逐一輸入數(shù)據(jù),直到輸入結(jié)束標(biāo)志。數(shù)據(jù)輸入的函數(shù)為:LNode*createtail(){LNode*s,*r;intx,tag;printf("inputthesignofending:");/*輸入結(jié)束標(biāo)志*/scanf("%d",&tag);h=(LNode*)malloc(sizeof(LNode));/*建立表頭結(jié)點(diǎn)*/h->data=tag;r=h;printf("inputthedata:");scanf("%d",&x);while(x!=tag)/*建立循環(huán)逐一輸入數(shù)據(jù)*/{s=(LNode*)malloc(sizeof(LNode));s->data=x;r->link=s;r=s;scanf("%d",&x);}r->link=NULL;returnh;}(2)輸出單鏈表中所有結(jié)點(diǎn)的數(shù)據(jù)域值;首先獲得表頭結(jié)點(diǎn)地址,然後建立循環(huán)逐一輸出數(shù)據(jù),直到地址為空。數(shù)據(jù)輸出的函數(shù)為:voidoutput(LNode*h){LNode*r;inti;r=h;for(i=1;r->link!=NULL;i++) { printf("%d.%d\n",i,r->link->data); r=r->link;} }(3)輸入x,y在第一種數(shù)據(jù)域值為x的結(jié)點(diǎn)之後插入結(jié)點(diǎn)y,若無(wú)結(jié)點(diǎn)x,則在表尾插入結(jié)點(diǎn)y; 建立兩個(gè)構(gòu)造體指針,一種指向目前結(jié)點(diǎn),另一種指向目前結(jié)點(diǎn)的上一結(jié)點(diǎn),建立循環(huán)掃描鏈表。當(dāng)目前結(jié)點(diǎn)指針域不為空且數(shù)據(jù)域等于x的時(shí)候,申請(qǐng)結(jié)點(diǎn)并給此結(jié)點(diǎn)數(shù)據(jù)域賦值為y,然後插入目前結(jié)點(diǎn)背面,退出函數(shù);當(dāng)目前結(jié)點(diǎn)指針域?yàn)榭盏臅r(shí)候,申請(qǐng)結(jié)點(diǎn)并給此結(jié)點(diǎn)數(shù)據(jù)域賦值為y,插入目前結(jié)點(diǎn)背面,退出函數(shù)。數(shù)據(jù)插入函數(shù)為:voidinsert(LNode*h){ LNode*r,*s; intx,y; printf("Inputthedatathatyouwanttoinsert:\n"); printf("x="); scanf("%d",&x);/*輸入x值*/ printf("y="); scanf("%d",&y);/*輸入y值*/ r=h; r=r->link; for(;;r=r->link) { if(r->data==x)/*當(dāng)目前結(jié)點(diǎn)指針域不為空且數(shù)據(jù)域等于x的時(shí)候…*/ { s=(LNode*)malloc(sizeof(LNode)); s->data=y; s->link=r->link; r->link=s; break; } if(r->link==NULL)/*當(dāng)目前結(jié)點(diǎn)指針域?yàn)榭盏臅r(shí)候*/ { s=(LNode*)malloc(sizeof(LNode)); s->data=y; s->link=NULL; r->link=s; break; } }}(4)輸入k,刪除單鏈表中所有的結(jié)點(diǎn)k,并輸出被刪除結(jié)點(diǎn)的個(gè)數(shù)。 建立三個(gè)構(gòu)造體指針,一種指向目前結(jié)點(diǎn),另一種指向目前結(jié)點(diǎn)的上一結(jié)點(diǎn),最終一種備用;建立整形變量l=0;建立循環(huán)掃描鏈表。當(dāng)目前結(jié)點(diǎn)指針域?yàn)榭盏臅r(shí)候,假如目前結(jié)點(diǎn)數(shù)據(jù)域等于k,刪除此結(jié)點(diǎn),l++,跳出循環(huán),結(jié)束操作;假如目前結(jié)點(diǎn)數(shù)據(jù)域不等于k,跳出循環(huán),結(jié)束操作。當(dāng)目前結(jié)點(diǎn)指針域不為空的時(shí)候,假如目前結(jié)點(diǎn)數(shù)據(jù)域等于k,刪除此結(jié)點(diǎn),l++,繼續(xù)循環(huán)操作;假如目前結(jié)點(diǎn)數(shù)據(jù)域不等于k,指針向後繼續(xù)掃描。循環(huán)結(jié)束後函數(shù)返回變量l的值,l便是刪除的結(jié)點(diǎn)的個(gè)數(shù)。數(shù)據(jù)刪除函數(shù)為:intdel(LNode*h){ LNode*r,*s,*t; intk,l=0; printf("Inputthedatathatyouwanttodelete:"); scanf("%d",&k); r=h; s=r; r=r->link; for(;;) { if(r->link==NULL)/*當(dāng)目前結(jié)點(diǎn)指針域?yàn)榭盏臅r(shí)候*/ { if(r->data==k)/*假如目前結(jié)點(diǎn)數(shù)據(jù)域不等于k…*/ { l++; s->link=NULL; free(r); break; } elsebreak;/*假如目前結(jié)點(diǎn)數(shù)據(jù)域等于k…*/ } else/*當(dāng)目前結(jié)點(diǎn)指針域不為空的時(shí)候*/ { if(r->data==k)/*假如目前結(jié)點(diǎn)數(shù)據(jù)域不等于k…*/ { l++; t=r; s->link=t->link; r=t->link; free(t); } else{r=r->link;s=s->link;}/*假如目前結(jié)點(diǎn)數(shù)據(jù)域不等于k…*/ } } returnl;}完整的源程序?yàn)椋?#include"stdio.h"#include"conio.h"#defineDataTypeinttypedefstructnode{DataTypedata;structnode*link;}LNode;LNode*h;LNode*createtail(){LNode*s,*r;intx,tag;system("cls");printf("inputthesignofending:");scanf("%d",&tag);h=(LNode*)malloc(sizeof(LNode));h->data=tag;r=h;printf("inputthedata:");scanf("%d",&x);while(x!=tag){s=(LNode*)malloc(sizeof(LNode));s->data=x;r->link=s;r=s;scanf("%d",&x);}r->link=NULL;returnh;}voidoutput(LNode*h){LNode*r;inti; system("cls");r=h;for(i=0;r->link!=NULL;i++) { printf("data[%d]=%d\n",i,r->link->data); r=r->link;} getch();}voidinsert(LNode*h){ LNode*r,*s; intx,y; system("cls"); printf("Inputthedatathatyouwanttoinsert:\n"); printf("x="); scanf("%d",&x); printf("y="); scanf("%d",&y); r=h; r=r->link; for(;;r=r->link) { if(r->data==x) { s=(LNode*)malloc(sizeof(LNode)); s->data=y; s->link=r->link; r->link=s; break; } if(r->link==NULL) { s=(LNode*)malloc(sizeof(LNode)); s->data=y; s->link=NULL; r->link=s; break; } }}intdel(LNode*h){ LNode*r,*s,*t; intk,l=0; system("cls"); printf("Inputthedatathatyouwanttodelete:"); scanf("%d",&k); r=h; s=r; r=r->link; for(;;) { if(r->link==NULL) { if(r->data==k) { l++; s->link=NULL; free(r); break; } elsebreak; } else { if(r->data==k) { l++; t=r; s->link=t->link; r=t->link; free(t); } else{r=r->link;s=s->link;} } } returnl;}voidnodata(){ system("cls"); printf("Youhadnotinputdata.\n\n\n"); printf("Press\"Enter\"toreturn"); getch();}main(){inta,b=1,c,l;h=-1;for(;b==1;){ system("cls");printf("1.Createalinearlist.\n"); printf("2.Outputthedataoflinearlist.\n"); printf("3.Insertdata.\n"); printf("4.Deletedata.\n"); printf("5.Exit\n"); scanf("%d",&a); switch(a) { case1:createtail();break; case2: { if(h==-1)nodata(); elseoutput(h);break; } case3: { if(h==-1)nodata(); elseinsert(h);break; } case4: { if(h==-1)nodata(); else{l=del(h);printf("Youhavedeleted%ddata(s)\n",l);}break; } default:b=3;break; }}printf("end.");getch();}試驗(yàn)成果和數(shù)據(jù)處理(1)初始界面:程序以菜單形式列出5個(gè)功能:1.Createalinearlist.(新建一種鏈表)2.Outputthedataoflinearlist.(輸出鏈表的數(shù)據(jù))3.Insertdata.(插入數(shù)據(jù))4.Deletedata.(刪除數(shù)據(jù))5.Exit.(退出)需要注意的是,程序必須先運(yùn)行第一項(xiàng)後才能運(yùn)行二三四項(xiàng),否則會(huì)提醒出錯(cuò):(2)新建一種鏈表:首先輸入結(jié)束標(biāo)志,這裏我設(shè)為-100,當(dāng)我在輸入數(shù)據(jù)的時(shí)候輸入-100便停止數(shù)據(jù)輸入。然後輸入數(shù)據(jù),在此我便輸入1-9九個(gè)數(shù)字作為九個(gè)數(shù)據(jù),然後輸入-100停止操作,返回初始界面。到此便成功建立一種鏈表。(3)輸出鏈表的數(shù)據(jù):(4)插入數(shù)據(jù): 例如我想在數(shù)據(jù)為3背面插入一種數(shù)據(jù)100:完畢操作後輸出數(shù)據(jù)為:(5)刪除數(shù)據(jù): 例如我想刪除剛剛插入的數(shù)據(jù)100: 完畢操作後輸出數(shù)據(jù)為: 需要注意的是,刪除操作會(huì)把鏈
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 建筑回購(gòu)合同范本
- 打更免責(zé)合同范本
- 工商質(zhì)權(quán)合同范本
- 廣播贊助合同范本
- 工程供水合同范本
- 賓館消殺合同范本
- 履行合同三方協(xié)議
- 承兌結(jié)算合同范本
- 廣告易協(xié)議合同
- 庫(kù)房搭建合同范本
- 2026天津市濱海新區(qū)事業(yè)單位招聘25人備考題庫(kù)必考題
- 2025年有關(guān)護(hù)理程序試題及答案
- 2026包鋼(集團(tuán))公司新員工招聘322人考試題庫(kù)附答案
- 2025年云南省人民檢察院聘用制書(shū)記員招聘(22人)筆試考試備考題庫(kù)及答案解析
- 店長(zhǎng)崗位職責(zé)與日常管理手冊(cè)
- 大學(xué)生校園創(chuàng)新創(chuàng)業(yè)計(jì)劃書(shū)
- 2025-2026學(xué)年北師大版五年級(jí)數(shù)學(xué)上冊(cè)(全冊(cè))知識(shí)點(diǎn)梳理歸納
- 形勢(shì)與政策(吉林大學(xué))知到智慧樹(shù)章節(jié)測(cè)試課后答案2024年秋吉林大學(xué)
- 2026年全年日歷表帶農(nóng)歷(A4可編輯可直接打印)預(yù)留備注位置
- DL/T 5218-2012 220kV~750kV變電站設(shè)計(jì)技術(shù)規(guī)程
- 范里安-微觀(guān)經(jīng)濟(jì)學(xué):現(xiàn)代觀(guān)點(diǎn)1
評(píng)論
0/150
提交評(píng)論