




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
單鏈表的基本操作1.試驗題目問題描述:實現(xiàn)帶頭結(jié)點的單鏈表的建立、求長度,取元素、修改元素、插入、刪除等單鏈表的基本操作。通過代碼的編寫理解并掌握單鏈表的過程編寫以及作用。2.試驗規(guī)定(1)依次從鍵盤讀入數(shù)據(jù),建立一種單鏈表并將單鏈表的初始化設(shè)置為空;(2)通過操作選擇,輸出單鏈表中的數(shù)據(jù)元素(3)顯示單鏈表的長度;(4)根據(jù)指定條件可以查找出元素和修改元素;(5)實目前指定位置插入和刪除元素的功能(6)顯示操作後的成果3.算法設(shè)計(1)用到的構(gòu)造(邏輯構(gòu)造、存儲構(gòu)造)邏輯構(gòu)造:線性構(gòu)造存儲構(gòu)造:帶頭結(jié)點的單鏈表(2)算法設(shè)計思緒定義結(jié)點類型LNode,每個結(jié)點包括數(shù)據(jù)域data和指針域next。定義頭指針LinkList。編寫如下函數(shù):1、createlist(LinkList&L);用尾插法創(chuàng)立一種帶頭結(jié)點的單鏈表。2、print(LinkListL);輸出該單鏈表中的數(shù)據(jù)元素。3、ListLength(LinkListL);求該單鏈表的長度。4、GetElem(LinkList&L,inti,ElemType&e);查找第i個元素。5、SetElem(LinkList&L,inti,ElemTypem);修改第i個元素。6、ListInsert(LinkList&L,inti,ElemTypee);在第i個元素前插入一種元素。7、ListDelete(LinkList&L,inti,ElemType&e2);刪除第i個元素。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)試和測試調(diào)試過程總結(jié)通過多次調(diào)試,本程序能很好的完畢試驗規(guī)定的各項功能。給出幾組測試數(shù)據(jù)及試驗成果:4.1系統(tǒng)界面4.2創(chuàng)立帶頭結(jié)點的單鏈表(先輸入單鏈表整數(shù),每輸入完一種整數(shù)後按回車鍵,數(shù)據(jù)輸入完後以0結(jié)束)4.3打印鏈表中的數(shù)據(jù)4.4打印鏈表長度4.5按位置取元素4.6修改鏈表中的元素4.7插入結(jié)點4.8按結(jié)點位置編號刪除結(jié)點4.8顯示做了修改後的鏈表元素:5.試驗總結(jié)對比這次試驗,在上機的時候明顯感覺到比之前愈加有思緒,可以很好地找個關(guān)鍵性的語句對程序進行修改,這次試驗雖然說比上次好,不過也暴漏出了許多的缺陷,在編寫的時候,感覺整個流程都挺對,不過就是運行不出來,或者是不可以實現(xià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é)點的單鏈表{intch;L=newLNode;L->next=NULL; printf("請輸入單鏈表中的數(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個結(jié)點或p為空止 if(!p||j<i) returnERROR;//第i個結(jié)點不存在 e=p->data; printf("第%2d個元素為:%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個結(jié)點或p為空止 if(!p||j<i) returnERROR;//第i個結(jié)點不存在 p->data=m; printf("\n"); printf("第%2d個元素修改為:%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個結(jié)點 if(!p||j>i-1) returnERROR;//i不不小于1或者不小于表長+1 LinkLists=newLNode; if(!s)returnERROR;//存儲空間分派失敗 s->data=e; s->next=p->next; p->next=s;printf("\n"); printf("在第%2d個位置插入元素:%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個節(jié)點,并另p指向其前驅(qū) } if(!p->next||j>i-1) returnERROR;//刪除位置不合理 else q=p->next;p->next=q->next;//修改指針 e2=q->data;printf("刪除了第%2d個元素:%d\n",i,e2); printf("\n"); deleteq;//釋放節(jié)點空間 returnOK;}intscan(){intd;printf("1.創(chuàng)立帶頭結(jié)點的單鏈表\n");printf("2.打印連表中的數(shù)據(jù)\n");printf("3.打印鏈表長度\n");printf("4.按位置取元素\n");printf("5.修改鏈表中的元素\n");printf("6.插入結(jié)點\n");printf("7.按結(jié)點位置編號刪除結(jié)點\n");printf("其他鍵退出......\n");printf("\n請選擇所要進行的操作\n");scanf("%d",&d);return(d);}voidmain(){printf("建立單鏈表,請先輸入單鏈表整數(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("請輸入要查找的元素的位置\n\n");scanf("%d",&i1);GetElem(L,i1,e);;break;case5:printf("請輸入要修改的元素的位置\n");scanf("%d",&i2); printf("請輸入要修改的元素的值\n");scanf("%d",&m);SetElem(L,i2,m);break;case6:p
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 專項5 標點(原卷版)
- 河北省石家莊市新樂一中2024-2025學年高一下學期第一次月考生物試題(原卷版+解析版)
- 商品陳列大全
- 2025年初中魯科版(五四學制)八年級上冊第四章第二節(jié)《探究凸透鏡成像規(guī)律》說課稿
- 【國金證券】人形機器人行業(yè)研究:人形機器人從理想走進現(xiàn)實
- 英語護士應聘簡歷
- 2025年廣東省初中學業(yè)水平考試模擬英語試題(原卷版+解析版)
- 《會計信息系統(tǒng)應用》課件 學習情境2 系統(tǒng)管理和基礎(chǔ)設(shè)置
- 二零二五年度北京市電子產(chǎn)品寄存與智能監(jiān)控服務(wù)協(xié)議
- 二零二五年度辦公空間互換及增值服務(wù)合作協(xié)議
- 《JJG196-2006-常用玻璃量器檢定規(guī)程》
- 小學一年級數(shù)學十幾減幾練習題(共20份)
- 08J933-1體育場地與設(shè)施(一)
- 承包合同文件
- ISO9001-ISO14001-ISO45001三體系內(nèi)部審核檢查表
- JT-T-1094-2016營運客車安全技術(shù)條件
- 擊鼓傳花懲罰游戲20題(課堂)
- 2024 smart社區(qū)運營全案服務(wù)項目
- QB/T 8020-2024 冷凍飲品 冰棍(正式版)
- 2024年專四閱讀理解練習題
- 神經(jīng)外科顱內(nèi)動脈瘤血管內(nèi)介入栓塞治療手術(shù)知情同意書
評論
0/150
提交評論