




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
實驗題目線性表的鏈式存儲結(jié)構(gòu)小組合作姓名班級學(xué)號一、實驗?zāi)康膶嶒灒ㄒ唬?掌握線性表的存儲方式、表示方式.掌握線性表的基本操作,以及其如何用代碼實現(xiàn)實驗(二).掌握元素在線性表中的存儲以及表示方法,如何取數(shù)據(jù)元素.拓展:將存有偶數(shù)個元素的線性表中的奇數(shù)項、偶數(shù)項分別抽出,組成一個新的線性表,并將新的線性表輸出二.實驗環(huán)境DevC++三、實驗內(nèi)容與步驟實驗(一)內(nèi)容:線性表的鏈式存儲結(jié)構(gòu),簡稱鏈表,有單鏈表和雙鏈表兩類。單鏈表是一種基本的數(shù)據(jù)結(jié)構(gòu),有兩部分組成:指針域和數(shù)據(jù)域,數(shù)據(jù)域用于存放數(shù)據(jù),指針域用于指向下一個結(jié)點的位置。為了操作方便,般為單鏈表創(chuàng)建一個頭結(jié)點,指向線性表的的首元素。線性表的最后一個元素的指針域為空,表示鏈表的結(jié)束。通順序表一樣,鏈表也有許多基本操作,如:(1)單鏈表的創(chuàng)建(2)單鏈表元素的插入(3)單鏈表元素的刪除(4)單鏈表元素的查找(定位)步驟:.引入相關(guān)的頭文件,宏定義.創(chuàng)建一個結(jié)構(gòu)體,用于表示鏈表的結(jié)構(gòu).創(chuàng)建一個空的單鏈表.向單鏈表中添加數(shù)據(jù).查找單鏈表中的元素.刪除單鏈表的元素實驗(二)內(nèi)容:已知單鏈表已創(chuàng)建好,表示為LinkList={a1,b1,a2,b2,..an,bn},將單鏈表拆分,使得{a1,a2,..an}構(gòu)成一個單鏈表,剩余的元素構(gòu)成一個單鏈表,編程實現(xiàn)。(1)創(chuàng)建單鏈表,添加2口個元素(2)將鏈表拆分為兩個子鏈表步驟:.引入相關(guān)的頭文件,宏定義.創(chuàng)建一個結(jié)構(gòu)體,用于表示鏈表的結(jié)構(gòu).創(chuàng)建一個空的單鏈表.向單鏈表中添加數(shù)據(jù).調(diào)用拆分鏈表的函數(shù),用于實現(xiàn)對鏈表的拆分工作.輸出拆分后的單鏈表四、實驗過程與分析實驗(一)1)引入頭文件,進行相關(guān)的定義操作#include<stdio.h>#include<stdlib.h>#defineOK1#defineERROR0typedefintElemType;typedefintStatus;typedefstructLNode{ElemTypedata;structLNode*next;}LNode,*LinkList;2)編寫鏈表的初始化函數(shù),用于頭結(jié)點的初始化操作voidInitList(LinkListL){L->next=NULL;L->data—0;printf("帶有頭結(jié)點的單鏈表初始化完畢\n\n");}3)單鏈表的遍歷函數(shù),用于輸出單鏈表的結(jié)點值〃遍歷單鏈表voidPrintList(LinkListL){LNode*p;p=L->next;if(p二二NULL){printf("單鏈表為空\n\n");return;}printf("單鏈表的結(jié)點值為:");while(p){printf("%d",p->data);p=p->next;)printf("\n\n");)4)結(jié)點的頭插法:用于在頭結(jié)點之后插入一個結(jié)點〃結(jié)點頭插法StatusInsertHead(LinkListL){〃創(chuàng)建結(jié)點LNode*p;ElemTyped;printf("請輸入結(jié)點的值:”);scanf("%d",&d);p=(LNode*)malloc(sizeof(LNode));p->data=d;p->next=L->next;L->next=p;printf("頭插法插入結(jié)點成功\n\n");returnOK;)5)結(jié)點的尾插法:用于在鏈表的末尾,插入一個結(jié)點〃結(jié)點尾插法StatusInsertTail(LinkListL){LNode*p,*q;ElemTyped;printf("請輸入結(jié)點的值:”);scanf("%d",&d);P=L;q=(LNode*)malloc(sizeof(LNode));q->next=NULL;q->data=d;while(p->next){p=p->next;)p->next=q;printf("尾插法創(chuàng)建單鏈表成功\n\n");returnOK;)6)單鏈表元素的查找:用于獲取某個位置的元素〃獲取單鏈表中的第i個元素StatusGetElem(LinkListL,intloc){inti=0;LNode*p;p=L->next;while(p){i++;if(i==loc){printf("單鏈表的第%4個元素是:%d\n\n",loc,p->data);break;)p=p->next;)if(!p){printf("該位置超過單鏈表的長度\n\n");returnERROR;)returnOK;)7)單鏈表結(jié)點的刪除〃刪除單鏈表中的第i個結(jié)點StatusDeleteNode(LinkListL,intloc){inti;LNode*p,*q;P=L;if(!p->next){printf("單鏈表為空\n\n");returnERROR;)if(loc<=0){printf("位置必須大于0\n\n");returnERROR;)for(i=0;i<loc-1;i++){p=p->next;if(!p){〃說明單鏈表結(jié)束printf("第%d個元素不存在\n",loc);returnERROR;))q=p->next;p->next=q->next;free(q);printf("結(jié)點刪除成功\n");returnOK;)8)在主函數(shù)中調(diào)用相關(guān)的函數(shù)intmain(void){LinkListL;L=(LNode*)malloc(sizeof(LNode));InitList(L);InsertHead(L);InsertHead(L);PrintList(L);InsertTail(L);InsertTail(L);PrintList(L);GetElem(L,4);DeleteNode(L,1);PrintList(L);DeleteNode(L,0);PrintList(L);return0;)9)編譯鏈接源代碼,后運行exe文件:
帶有頭結(jié)點的單窿表初始化完畢市輸入結(jié)點的值:10頭插法插入結(jié)點成功請輸入結(jié)點的值:20頭插法插入結(jié)點成功單鏈表的結(jié)點值為:2010請輸入結(jié)點的值:30尾插法創(chuàng)建單鏈表成功請輸入結(jié)點的值;40尾插法創(chuàng)建單鏈表成功單鏈表的結(jié)點值為;20103040單鏈表的第4個元素是,4013)主函數(shù)中傳入?yún)?shù),刪除單鏈表的第一個結(jié)點:帶有頭結(jié)點的單鏈.我初始化完畢請輸入結(jié)點的值;1。買僧法插入結(jié)點成功請輸入結(jié)點的值工2C實扁法插入結(jié)點成功單施表的結(jié)點值為:2010請輸入結(jié)點的值:30尾捕怯創(chuàng)建單錯表成功請輸入結(jié)點的值:40尾插法創(chuàng)建單錯表成功單能表的結(jié)點值為:20103040單袖表的第4個元素是:40結(jié)點刪除成功單鏈表的站點值為:10304014)主函數(shù)傳入?yún)?shù),刪除第0個未位置的元素,程序報錯:
實驗(二)1)引入相關(guān)的頭文件,進行宏定義#include<stdio.h>#include<stdlib.h>typedefstructNode{intdata;structNode*next;}Node,*LinkList;2)初始化函數(shù),用于對頭結(jié)點初始化和插入元素(尾插法)voidinit(LinkListL){inti,n;Node*p;L->data=0;L->next=NULL;printf("線性表初始化完成\n");printf("請輸入線性表的個數(shù)(偶數(shù)個):");scanf("%d",&n);if(n%2!=0){printf("請輸入偶數(shù)個數(shù)據(jù)\口");return;for(i=0;i<n;i++){p=(Node*)malloc(sizeof(Node));scanf("%d”,&p->data);p->next=L->next;L->next=p;}printfC數(shù)據(jù)插入完成\n");3)單鏈表的輸出函數(shù)voidprint(LinkListL){Node*p;p=L->next;printf("線性表的元素為:\n");while(p){printf("%d",p->data);p=p->next;)printf("\n\n");4)單鏈表的拆分函數(shù),把單鏈表拆分成兩個:voidcreate(LinkListL){Node*p,*q,*t;〃q指向L1,t指向L2LinkListL1,L2;L1=(Node*)malloc(sizeof(Node));L2=(Node*)malloc(sizeof(Node));L1->next=NULL;L2->next=NULL;L1->data=0;L2->data=0;q=L1;t=L2;p=L->next;while(p){q->next=p;p=p->next;q=q->next;q->next=NULL;t->next=p;p=p->next;t=t->next;t->next=NULL;)print(L1);print(L2);p=L;5)在主函數(shù)中進行函數(shù)的調(diào)用intmain(void){LinkListL;L=(Node*)malloc(sizeof(Node));init(L);print(L);create(L);return0;)6)編譯,連接,運行源代碼:C:\Users\mechrevo\Desktop\divide.exe品清輸入線性表的個數(shù)(偶數(shù)個):7)輸入8,回車,并輸入8個數(shù),用空格分隔開,根據(jù)輸出信息,可以看出,鏈表已經(jīng)拆分為兩個線性表的元素為踐性表的元素為Processexitedafter50.48線性表的元素為踐性表的元素為Processexitedafter50.48secondswithre倩按任意鍵繼續(xù)一.線性去初始化完成清輸入線性衣的個數(shù)(偶數(shù)個卜887654321
溫馨提示
- 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)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 北京汽車托運合同范本
- 2025年泰州貨運從業(yè)資格證怎么考
- 修復(fù)車交易合同范本
- 醫(yī)院弱電集成合同范本
- 制衣廠勞動合同范本
- 主廚合同范本
- 與中介定金合同范本
- 棉花勞務(wù)合同范本
- 冠名使用合同范本
- 勞動合同范本完整
- 同等學(xué)力英語申碩考試詞匯(第六版大綱)電子版
- 文化產(chǎn)業(yè)園項目建議書范文
- 互聯(lián)網(wǎng)銷售卷煙(煙草)案件的分析
- 公務(wù)員考察政審表樣本
- 白菜花生長過程記錄
- BQB480-2014無取向電工鋼
- 各類許可證允許使用的放射性藥品目錄
- 解析幾何期末考試試卷
- 給水管道通水試驗及沖洗記錄填寫范本
- 唐納森焊煙除塵器(共22頁)
- 機電一體化畢業(yè)設(shè)計(論文)基于PLC的玻璃搬運機械手系統(tǒng)設(shè)計
評論
0/150
提交評論