單鏈表的定義與基本操作.doc_第1頁
單鏈表的定義與基本操作.doc_第2頁
單鏈表的定義與基本操作.doc_第3頁
單鏈表的定義與基本操作.doc_第4頁
單鏈表的定義與基本操作.doc_第5頁
已閱讀5頁,還剩10頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

. . . . 單鏈表的定義及基本操作 一、實(shí)驗(yàn)?zāi)康?、意義(1)理解線性表中帶頭結(jié)點(diǎn)單鏈表的定義和邏輯圖表示方法。(2)熟練掌握單鏈表的插入,刪除和查詢算法的設(shè)計(jì)與實(shí)現(xiàn)。(3)根據(jù)具體問題的需要,設(shè)計(jì)出合理的表示數(shù)據(jù)的鏈表結(jié)構(gòu),并設(shè)計(jì)相關(guān)算法。二、實(shí)驗(yàn)內(nèi)容及要求說明1:本次實(shí)驗(yàn)中的鏈表結(jié)構(gòu)均為帶頭結(jié)點(diǎn)的單鏈表。說明2: 學(xué)生在上機(jī)實(shí)驗(yàn)時(shí),需要自己設(shè)計(jì)出所涉及到的函數(shù),同時(shí)設(shè)計(jì)多組輸入數(shù)據(jù)并編寫主程序分別調(diào)用這些函數(shù),調(diào)試程序并對(duì)相應(yīng)的輸出作出分析;修改輸入數(shù)據(jù),預(yù)期輸出并驗(yàn)證輸出的結(jié)果,加深對(duì)有關(guān)算法的理解。具體要求:建立單鏈表,完成鏈表(帶表頭結(jié)點(diǎn))的基本操作:建立鏈表、插入、刪除、查找、輸出;其它基本操作還有銷毀鏈表、將鏈表置為空表、求鏈表的長度、獲取某位置結(jié)點(diǎn)的內(nèi)容、搜索結(jié)點(diǎn)。三、實(shí)驗(yàn)所涉及的知識(shí)點(diǎn)數(shù)據(jù)結(jié)構(gòu)、C語言語法函數(shù)、結(jié)構(gòu)體類型指針、單鏈表(建表、初始化鏈表、求表長、插入、刪除、查詢算法)等。四、實(shí)驗(yàn)結(jié)果及分析(所輸入的數(shù)據(jù)及相應(yīng)的運(yùn)行結(jié)果,運(yùn)行結(jié)果要有提示信息,運(yùn)行結(jié)果采用截圖方式給出。) 五、總結(jié)與體會(huì)(調(diào)試程序的心得與體會(huì),若實(shí)驗(yàn)課上未完成調(diào)試,要認(rèn)真找出錯(cuò)誤并分析原因等。)調(diào)試程序時(shí),出現(xiàn)了許多錯(cuò)誤。如:結(jié)構(gòu)體類型指針出錯(cuò),忽略了釋放存儲(chǔ)空間,對(duì)頭插法建表、尾插法建表不熟悉等。另外還有一些語法上的錯(cuò)誤。由于對(duì)所學(xué)知識(shí)點(diǎn)概念模糊,試驗(yàn)課上未能完成此次上機(jī)作業(yè)。后來經(jīng)過查閱教材,瀏覽網(wǎng)頁等方式,才完成試驗(yàn)。這次試驗(yàn)出現(xiàn)錯(cuò)誤最重要的原因就是對(duì)課本知識(shí)點(diǎn)理解不深刻以及編寫代碼時(shí)的粗心。以后要都去練習(xí)、實(shí)踐,以完善自己的不足。六、程序清單(包含注釋)/單鏈表#include#include#define OK 1#define ERROR 0typedef char ElemType;typedef int Status;/線性表的單鏈表的存儲(chǔ)結(jié)構(gòu)typedef struct LNodeElemType data;struct LNode *next;LNode,*LinkList;/LinkList為結(jié)構(gòu)體類型的指針,可以直接定義變量,比如LinkList p;/建表(頭插法)void CreatListF(LinkList &L,ElemType a,int n)/初始化線性表L=(LinkList)malloc(sizeof(LNode);/分配內(nèi)存空間L-next=NULL;/在表中插入元素LinkList S;int i;/頭插法for(i=0;idata=ai;/數(shù)據(jù)域S-next=L-next;L-next=S;/建表(尾插法)void CreatListR(LinkList &L,ElemType a,int n)L=(LinkList)malloc(sizeof(LNode);L-next=NULL;LinkList p;p=L;LinkList S;int i;/尾插法for(i=0;idata=ai;p-next=S;p=S;p-next=NULL;/初始化線性表void InitList(LinkList &L)L=(LinkList)malloc(sizeof(LNode);L-next=NULL;/獲得鏈表元素Status GetElem(LinkList L,int i,ElemType &e)/L為帶頭結(jié)點(diǎn)的單鏈表的頭指針LinkList p;int j;/初始化,p指向第一個(gè)結(jié)點(diǎn)p=L-next;/j為計(jì)數(shù)器j=1;/順指針往后查找,直到p指向第i個(gè)元素或p為空while(p & jnext;j+;/第i個(gè)元素不存在if(!p | ji)return ERROR;/取第i個(gè)元素e=p-data;return OK;/插入Status ListInsert(LinkList &L,int i,ElemType e)int j=0;LinkList p;p=L;while(p!=NULL & jnext;j+;if(!p | ji-1)return ERROR;LinkList S;S=(LinkList)malloc(sizeof(LNode);/生成新結(jié)點(diǎn)S-data=e;S-next=p-next;p-next=S;return OK;/刪除Status ListDelete(LinkList &L,int i,ElemType &e)LinkList p;LinkList q;int j=0;p=L;while(p-next)!=NULL & jnext;j+; /!(p-next) :指向第i個(gè)結(jié)點(diǎn)的指針為空(第i個(gè)元素不存在)if(!(p-next) | ji-1)return ERROR;q=p-next;p-next=q-next;e=q-data;free(q);return OK;/求表的長度int ListLength(LinkList L)LinkList p;p=L;int j=0;/線性鏈表最后一個(gè)結(jié)點(diǎn)的指針為空while(p-next)!=NULL)j+;p=p-next;return j;/輸出void visit(LinkList L)LinkList p;p=L-next;while(p!=NULL)printf(%c ,p-data);p=p-next;/銷毀:要銷毀的話從頭結(jié)點(diǎn)開始依次free 但要先得到下一個(gè)節(jié)點(diǎn)再freevoid DestroyList(LinkList &L)LinkList p;LinkList q;p=L;q=p-next;while(p!=NULL)free(p);p=q;q=p-next;/free(p);/判空int ListEmpty(LinkList L)/為空表則執(zhí)行該語句,否則返回return 0;return (L-next=NULL);/查找int ListSearch(LinkList L,ElemType e)LinkList p;p=L-next;int i=1;while(p!=NULL & p-data!=e)p=p-next;i+;if(p=NULL)return 0;return i;int main()ElemType e;ElemType a6=a,b,c,d,e,f;LinkList L;/鏈表的頭指針printf(頭插法建表:);CreatListF(L,a,6);visit(L);printf(nn);/初始化 InitList(L);printf(初始化后的表:);visit(L);printf(nn);printf(尾插法建表:);CreatListR(L,a,6); visit(L);printf(nn);/初始化后表為空,此時(shí)不要調(diào)用GetElem()GetElem(L,3,e);printf(表中第3個(gè)元素為:);printf(%cnn,e);/在第5個(gè)位置插入字符kListInsert(L,5,k);printf(在表中第5個(gè)位置插入字符k后:);visit(L);printf(nn);printf(表的長度為:%dnn,ListLength(L);int z;z=ListSearch(L,d);printf(d是第%d個(gè)元素nn,z);ListDelete(L,2,e);printf(刪除第2個(gè)元素:%cnn,e);/銷毀/DestroyList(L);return 0;寧可累死在路

溫馨提示

  • 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)論