




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、 一、實驗?zāi)康模?、通過單鏈表來理解鏈表的邏輯結(jié)構(gòu)和存儲結(jié)構(gòu),熟練掌握線性表的存儲方式和一些根本的操作,如:線性表的建立、求表長操作、取元素操作、按值查找操作、插入及刪除操作等。2、將理論知識與實踐相結(jié)合,提高自己的實際動手能力。3、通過實踐來及時發(fā)現(xiàn)自己的缺點與缺乏,以便為接下來更加有效的學(xué)習(xí)做鋪墊。二、實驗內(nèi)容:1、采用頭插法或尾插法此次課程設(shè)計我們以頭插法為例建立一個單鏈表。2、對建立好的單鏈表進行一些根本的操作,如:a.單鏈表的類型定義。b.求表長操作。c.取元素操作。d.按值查找操作。e.顯示元素操作。f.插入操作。g.刪除操作。h.顯示元素操作。 三、根本要求:軟件要求:Windo
2、ws 2003、 、Microsoft Ward 2003等。硬件要求:電腦、優(yōu)盤及其它輔助設(shè)備。四、算法設(shè)計思想:用一組任意的存儲單元來存放線性表中的數(shù)據(jù)元素,這組存儲單元既可以是連續(xù)的,也可以是不連續(xù)的,甚至可以是零散分布在內(nèi)存中的任意位置上。為了表示線性表中的數(shù)據(jù)元素之間的前后關(guān)系,每個數(shù)據(jù)元素在存儲器中的結(jié)點除了存儲其根本信息外結(jié)點的數(shù)據(jù)域,還需附加存儲其前驅(qū)和后繼的位置結(jié)點的指針域。這樣線性表L=a1,a2,,an在存儲器上的n個結(jié)點就通過各自結(jié)點的指針域鏈接成一個“ 鏈子,即鏈表。如果只附加存儲其后繼的位置后繼指針就為單鏈表。五、算法流程圖主函數(shù)主函數(shù)開 始求表長取元素按值查找插入
3、元素刪除元素輸出建立單鏈表結(jié)束六、算法源代碼#include #include#include typedef int Status;#define TRUE 1#define FALSE 0#define OK 1#define ERROR 0#define OVERFLOW -2#define NULL 0/*單鏈表的類型定義*/typedef struct LNode int data;struct LNode *next;LNode, *LinkList;/*頭插法建立單鏈表*/LNode *createList(int n)LNode *p;int i;LinkList L;L=(L
4、inkList)malloc(sizeof(LNode);L-next=NULL;for(i=1;i=n;i+)p=(LNode*)malloc(sizeof(LNode);cout p-data;p-next=L-next;L-next=p;return L;/*求表長操作*/int listLength(LinkList L) LNode *p=L;int j=0;while(p-next)p=p-next;j+;return j;/*取元素操作*/void getElem(LNode *L,int i) int e;LNode *p=L;int j=0;while(jnext)p=p-n
5、ext;j+;if(j=i)e=p-data;printf(取得元素為:%dn,e);else printf(無此元素n);/*按值查找*/int locateElem(LinkList L,int e)LNode *p=L-next; while(p-data!=e&p!=NULL) p=p-next;if(p-data=e)return OK;else return ERROR;/*單鏈表的插入*/int listInsert(LinkList L,int i,int e)LNode *p=L,*q;int j=0;while(jnext)p=p-next;j+;if(j=i-1)q=(L
6、Node*)malloc(sizeof(LNode);if(!q) return OVERFLOW;q-data=e;q-next=p-next;p-next=q;return OK;else return ERROR;/*單鏈表的刪除*/int listDelete(LNode* L,int i)LNode *p=L,*q;int j=0;while(jnext)p=p-next;j+;if(j=i-1&p-next)q=p-next;p-next=q-next; free(q);return OK; else return ERROR;/*顯示元素操作*/void display(LNod
7、e *L)LNode *p=L-next;while(p) printf(%d,p-data); p=p-next; /*主函數(shù)*/void main () cout* * * * * * * * * * * * *endl;cout * 1:單鏈表的建立 * endl;cout* * * * 2:求表長 * * * * * *endl;cout * 3:取元素 * * * endl;cout* * * * 4:按值查找 * * * * *endl;cout * 5:插入 * * * endl;cout* * * * 6:刪除 * * * * * *endl;cout * 7:顯示 * * *
8、 endl;cout* * * * 0:退出 * * * * * *endl;cout* * * * * * * * * * * * *endl; LNode *L; int n,flag=1,i; int h,m; while(flag) cout i;switch(i) case 0: flag=0;break; case 1: coutn, L=createList(n);break; case 2: cout求得表長為: listLength(L)endl;break; case 3: cout h, getElem(L,h);break; case 4: coutm,coutloca
9、teElem(L,m); break;case 5: coutim,cout listInsert(L,i,m)endl;break; case 6: couti,cou t listDelete(L,i)endl;break; case 7: display(L);break; default: cout輸入錯誤,請重新輸入!; 七、算法運行結(jié)果1、顯示整個鏈表的功能選擇:2、設(shè)置單鏈表的長度:3、求出并返回鏈表的長度:4、在鏈表中取出某個位置的元素并返回其值:5、給定一個值,查看鏈表中是否存在這個元素,假設(shè)存在就返回TURE(即:返回數(shù)字1),反之,返回ERROR即:返回數(shù)字0:6、顯示鏈表中的元素:7、在鏈表的某個位置插入元素:8、刪除鏈表中的某個元素:9、退出對鏈表的操作:10、鏈表所有功能效果圖:八、收獲及體會通過這次課程設(shè)計,我們小組成員對單鏈表的根本操作都更加熟悉了、對線性存儲的認識也更加深刻了。我們在組長的領(lǐng)導(dǎo)下,認真的完成了此次課程
溫馨提示
- 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 房地產(chǎn)行業(yè)工作計劃制定
- 游戲活動對幼兒發(fā)展的影響計劃
- 品牌重塑中的領(lǐng)導(dǎo)力作用計劃
- 2025年紡粘法非織造布生產(chǎn)線項目建議書
- 分析企業(yè)強弱勢的管理方式計劃
- 智研咨詢發(fā)布-2025年中國玄武巖纖維行業(yè)現(xiàn)狀、發(fā)展環(huán)境及投資前景分析報告
- 2025年高精度帶材軋機項目合作計劃書
- 古氣候變遷在沉積記錄中的體現(xiàn)方式
- 2025年數(shù)控超精密磨床項目建議書
- 地球的故事之環(huán)境保護讀后感
- 《跨境電商B2B操作實務(wù)》教學(xué)大綱
- 老化箱點檢表A4版本
- 河口區(qū)自然資源
- 音標教學(xué)課件(共73張PPT)
- 2012數(shù)據(jù)結(jié)構(gòu)英文試卷A及答案
- 機翼結(jié)構(gòu)(課堂PPT)
- 二次回路施工驗收
- 自由組合定律的應(yīng)用9331的變式
- 唐河縣骨干網(wǎng)評員登記表
- 危險廢物利用和處置方式代碼表
- 井下使用切割機安全技術(shù)措施
評論
0/150
提交評論