數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)單鏈表的建立_第1頁
數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)單鏈表的建立_第2頁
數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)單鏈表的建立_第3頁
數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)單鏈表的建立_第4頁
數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)單鏈表的建立_第5頁
已閱讀5頁,還剩9頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、 一、實(shí)驗(yàn)?zāi)康模?、通過單鏈表來理解鏈表的邏輯結(jié)構(gòu)和存儲(chǔ)結(jié)構(gòu),熟練掌握線性表的存儲(chǔ)方式和一些根本的操作,如:線性表的建立、求表長操作、取元素操作、按值查找操作、插入及刪除操作等。2、將理論知識(shí)與實(shí)踐相結(jié)合,提高自己的實(shí)際動(dòng)手能力。3、通過實(shí)踐來及時(shí)發(fā)現(xiàn)自己的缺點(diǎn)與缺乏,以便為接下來更加有效的學(xué)習(xí)做鋪墊。二、實(shí)驗(yàn)內(nèi)容:1、采用頭插法或尾插法此次課程設(shè)計(jì)我們以頭插法為例建立一個(gè)單鏈表。2、對(duì)建立好的單鏈表進(jìn)行一些根本的操作,如:a.單鏈表的類型定義。b.求表長操作。c.取元素操作。d.按值查找操作。e.顯示元素操作。f.插入操作。g.刪除操作。h.顯示元素操作。 三、根本要求:軟件要求:Windo

2、ws 2003、 、Microsoft Ward 2003等。硬件要求:電腦、優(yōu)盤及其它輔助設(shè)備。四、算法設(shè)計(jì)思想:用一組任意的存儲(chǔ)單元來存放線性表中的數(shù)據(jù)元素,這組存儲(chǔ)單元既可以是連續(xù)的,也可以是不連續(xù)的,甚至可以是零散分布在內(nèi)存中的任意位置上。為了表示線性表中的數(shù)據(jù)元素之間的前后關(guān)系,每個(gè)數(shù)據(jù)元素在存儲(chǔ)器中的結(jié)點(diǎn)除了存儲(chǔ)其根本信息外結(jié)點(diǎn)的數(shù)據(jù)域,還需附加存儲(chǔ)其前驅(qū)和后繼的位置結(jié)點(diǎn)的指針域。這樣線性表L=a1,a2,,an在存儲(chǔ)器上的n個(gè)結(jié)點(diǎn)就通過各自結(jié)點(diǎn)的指針域鏈接成一個(gè)“ 鏈子,即鏈表。如果只附加存儲(chǔ)其后繼的位置后繼指針就為單鏈表。五、算法流程圖主函數(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輸入錯(cuò)誤,請(qǐng)重新輸入!; 七、算法運(yùn)行結(jié)果1、顯示整個(gè)鏈表的功能選擇:2、設(shè)置單鏈表的長度:3、求出并返回鏈表的長度:4、在鏈表中取出某個(gè)位置的元素并返回其值:5、給定一個(gè)值,查看鏈表中是否存在這個(gè)元素,假設(shè)存在就返回TURE(即:返回?cái)?shù)字1),反之,返回ERROR即:返回?cái)?shù)字0:6、顯示鏈表中的元素:7、在鏈表的某個(gè)位置插入元素:8、刪除鏈表中的某個(gè)元素:9、退出對(duì)鏈表的操作:10、鏈表所有功能效果圖:八、收獲及體會(huì)通過這次課程設(shè)計(jì),我們小組成員對(duì)單鏈表的根本操作都更加熟悉了、對(duì)線性存儲(chǔ)的認(rèn)識(shí)也更加深刻了。我們?cè)诮M長的領(lǐng)導(dǎo)下,認(rèn)真的完成了此次課程

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論