




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
單鏈表的基本操作1.試驗(yàn)題目問題描述:實(shí)現(xiàn)帶頭結(jié)點(diǎn)的單鏈表的建立、求長度,取元素、修改元素、插入、刪除等單鏈表的基本操作。通過代碼的編寫理解并掌握單鏈表的過程編寫以及作用。2.試驗(yàn)規(guī)定(1)依次從鍵盤讀入數(shù)據(jù),建立一種單鏈表并將單鏈表的初始化設(shè)置為空;(2)通過操作選擇,輸出單鏈表中的數(shù)據(jù)元素(3)顯示單鏈表的長度;(4)根據(jù)指定條件可以查找出元素和修改元素;(5)實(shí)目前指定位置插入和刪除元素的功能(6)顯示操作後的成果3.算法設(shè)計(jì)(1)用到的構(gòu)造(邏輯構(gòu)造、存儲(chǔ)構(gòu)造)邏輯構(gòu)造:線性構(gòu)造存儲(chǔ)構(gòu)造:帶頭結(jié)點(diǎn)的單鏈表(2)算法設(shè)計(jì)思緒定義結(jié)點(diǎn)類型LNode,每個(gè)結(jié)點(diǎn)包括數(shù)據(jù)域data和指針域next。定義頭指針LinkList。編寫如下函數(shù):1、createlist(LinkList&L);用尾插法創(chuàng)立一種帶頭結(jié)點(diǎn)的單鏈表。2、print(LinkListL);輸出該單鏈表中的數(shù)據(jù)元素。3、ListLength(LinkListL);求該單鏈表的長度。4、GetElem(LinkList&L,inti,ElemType&e);查找第i個(gè)元素。5、SetElem(LinkList&L,inti,ElemTypem);修改第i個(gè)元素。6、ListInsert(LinkList&L,inti,ElemTypee);在第i個(gè)元素前插入一種元素。7、ListDelete(LinkList&L,inti,ElemType&e2);刪除第i個(gè)元素。8、main();通過case構(gòu)造來調(diào)用createlist(LinkList&L)、GetElem(LinkList&L,inti,ElemType&e)、SetElem(LinkList&L,inti,ElemTypem)、ListInsert(LinkList&L,inti,ElemTypee)、ListDelete(LinkList&L,inti,ElemType&e2)4.調(diào)試和測(cè)試調(diào)試過程總結(jié)通過多次調(diào)試,本程序能很好的完畢試驗(yàn)規(guī)定的各項(xiàng)功能。給出幾組測(cè)試數(shù)據(jù)及試驗(yàn)成果:4.1系統(tǒng)界面4.2創(chuàng)立帶頭結(jié)點(diǎn)的單鏈表(先輸入單鏈表整數(shù),每輸入完一種整數(shù)後按回車鍵,數(shù)據(jù)輸入完後以0結(jié)束)4.3打印鏈表中的數(shù)據(jù)4.4打印鏈表長度4.5按位置取元素4.6修改鏈表中的元素4.7插入結(jié)點(diǎn)4.8按結(jié)點(diǎn)位置編號(hào)刪除結(jié)點(diǎn)4.8顯示做了修改後的鏈表元素:5.試驗(yàn)總結(jié)對(duì)比這次試驗(yàn),在上機(jī)的時(shí)候明顯感覺到比之前愈加有思緒,可以很好地找個(gè)關(guān)鍵性的語句對(duì)程序進(jìn)行修改,這次試驗(yàn)雖然說比上次好,不過也暴漏出了許多的缺陷,在編寫的時(shí)候,感覺整個(gè)流程都挺對(duì),不過就是運(yùn)行不出來,或者是不可以實(shí)現(xiàn)原有的功能,通過與同學(xué)的交流,然後慢慢地參照書本才將本次試驗(yàn)很好地完畢。6.附錄(源程序)#include<stdio.h>#include<conio.h>#include"stdafx.h"#defineOK1#defineERROR0typedefcharElemType;typedefintStatus;typedefstructLNode{ElemTypedata;LNode*next;}LNode,*LinkList;Statuscreatelist(LinkList&L)//尾插法創(chuàng)立帶頭結(jié)點(diǎn)的單鏈表{intch;L=newLNode;L->next=NULL; printf("請(qǐng)輸入單鏈表中的數(shù)據(jù):"); scanf("%d",&ch);LinkListr=L; while(ch!=0){LinkListp=newLNode;p->data=ch;p->next=NULL;r->next=p;r=p; scanf("%d",&ch);}returnOK;}voidprint(LinkListL)//輸出單鏈表{LinkListp=L->next;printf("單鏈表為:\n"); while(p){printf("%2d",p->data);p=p->next;}}StatusListLength(LinkListL)//求單鏈表的長度{intk=0; LinkListp=L->next;while(p){ k++; p=p->next;} printf("\n"); printf("單鏈表的長度為%d:",k); printf("\n"); returnk;}StatusGetElem(LinkList&L,inti,ElemType&e){LinkListp=newLNode; p=L->next;intj=1; while(p&&j<i) {p=p->next;j++; }//順指針向後查找,直至p指到第i個(gè)結(jié)點(diǎn)或p為空止 if(!p||j<i) returnERROR;//第i個(gè)結(jié)點(diǎn)不存在 e=p->data; printf("第%2d個(gè)元素為:%2d\n",i,e); printf("\n"); returnOK;}StatusSetElem(LinkList&L,inti,ElemTypem){LinkListp=newLNode; p=L->next;intj=1; while(p&&j<i) {p=p->next;j++; }//順指針向後查找,直至p指到第i個(gè)結(jié)點(diǎn)或p為空止 if(!p||j<i) returnERROR;//第i個(gè)結(jié)點(diǎn)不存在 p->data=m; printf("\n"); printf("第%2d個(gè)元素修改為:%2d\n",i,m); printf("\n"); returnOK;}StatusListInsert(LinkList&L,inti,ElemTypee){LinkListp=newLNode;p=L;intj=0; while(p&&j<i-1) {p=p->next;++j; }//令指針p指向第i-1個(gè)結(jié)點(diǎn) if(!p||j>i-1) returnERROR;//i不不小于1或者不小于表長+1 LinkLists=newLNode; if(!s)returnERROR;//存儲(chǔ)空間分派失敗 s->data=e; s->next=p->next; p->next=s;printf("\n"); printf("在第%2d個(gè)位置插入元素:%2d\n",i,e); printf("\n"); returnOK;}StatusListDelete(LinkList&L,inti,ElemType&e2){LinkListp=L;intj=0; LinkListq; while(p->next&&j<i-1) {p=p->next;++j;//尋找第i個(gè)節(jié)點(diǎn),并另p指向其前驅(qū) } if(!p->next||j>i-1) returnERROR;//刪除位置不合理 else q=p->next;p->next=q->next;//修改指針 e2=q->data;printf("刪除了第%2d個(gè)元素:%d\n",i,e2); printf("\n"); deleteq;//釋放節(jié)點(diǎn)空間 returnOK;}intscan(){intd;printf("1.創(chuàng)立帶頭結(jié)點(diǎn)的單鏈表\n");printf("2.打印連表中的數(shù)據(jù)\n");printf("3.打印鏈表長度\n");printf("4.按位置取元素\n");printf("5.修改鏈表中的元素\n");printf("6.插入結(jié)點(diǎn)\n");printf("7.按結(jié)點(diǎn)位置編號(hào)刪除結(jié)點(diǎn)\n");printf("其他鍵退出......\n");printf("\n請(qǐng)選擇所要進(jìn)行的操作\n");scanf("%d",&d);return(d);}voidmain(){printf("建立單鏈表,請(qǐng)先輸入單鏈表整數(shù),每輸入完一種整數(shù)後按回車鍵,數(shù)據(jù)輸入完後以0結(jié)束"); printf("\n");LinkListL; ElemTypee;ElemTypee2; intquit=0; inti1,i2,i3,i4,m,n;while(!quit){switch(scan()){case1:createlist(L);printf("\n\n單鏈表已創(chuàng)立!\n\n");break;case2:print(L); printf("\n\n"); break;case3:ListLength(L); printf("\n\n"); break;case4:printf("請(qǐng)輸入要查找的元素的位置\n\n");scanf("%d",&i1);GetElem(L,i1,e);;break;case5:printf("請(qǐng)輸入要修改的元素的位置\n");scanf("%d",&i2); printf("請(qǐng)輸入要修改的元素的值\n");scanf("%d",&m);SetElem(L,i2,m);break;case6:p
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(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ǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- DB14-T 1641-2025 設(shè)施黃瓜病蟲害綠色防控技術(shù)規(guī)程
- 中醫(yī)離奇病案分析
- 2025年熔化焊接與熱切割作業(yè)模擬考試100題及答案
- 銀行財(cái)務(wù)擔(dān)保業(yè)務(wù)合同賬務(wù)操作細(xì)則
- 人工智能產(chǎn)業(yè)園區(qū)廠房土地使用權(quán)抵押擔(dān)保投資合同
- 高效節(jié)水型茶園承包經(jīng)營合同樣本
- Brand KPIs for neobanking PagBank in Brazil-英文培訓(xùn)課件2025.4
- Brand KPIs for neobanking Tandem in the United Kingdom-英文培訓(xùn)課件2025.4
- 2025年國際法專業(yè)考試題及答案參考
- 2025年高校教師教學(xué)能力考試試卷及答案
- 叔侄關(guān)系斷絕協(xié)議書
- 中小學(xué)-預(yù)防性騷擾與性侵害-1-課件
- 國際經(jīng)濟(jì)合作(-第二版)思考題和知識(shí)點(diǎn)運(yùn)用習(xí)題答案
- 江蘇省常州市溧陽市2023-2024學(xué)年八年級(jí)下學(xué)期期末道德與法治試題(含答案解析)
- 2024年江蘇省南通市如皋市中考一模語文試題
- SY-T 5374.2-2023 固井作業(yè)規(guī)程 第2部分-特殊固井
- 08J933-1體育場(chǎng)地與設(shè)施(一)
- 分部工程驗(yàn)收流程
- 住建部勞務(wù)分包合同(2024版)
- 2023年高考物理分題型多維刷題練專題19熱學(xué)中的變質(zhì)量氣體問題(原卷版+解析)
- 廣東省茂名市2023-2024學(xué)年八年級(jí)下學(xué)期期末數(shù)學(xué)試題
評(píng)論
0/150
提交評(píng)論