資源描述:
《鏈表基本操作實(shí)驗(yàn)報(bào)告材料》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在工程資料-天天文庫。
1、實(shí)用文檔實(shí)驗(yàn)2鏈表基本操作實(shí)驗(yàn)一、實(shí)驗(yàn)?zāi)康?.定義單鏈表的結(jié)點(diǎn)類型。2.熟悉對(duì)單鏈表的一些基本操作和具體的函數(shù)定義。3.通過單鏈表的定義掌握線性表的鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)的特點(diǎn)。二、實(shí)驗(yàn)內(nèi)容與要求該程序的功能是實(shí)現(xiàn)單鏈表的定義和主要操作。如:單鏈表建立、輸出、插入、刪除、查找等操作。該程序包括單鏈表結(jié)構(gòu)類型以及對(duì)單鏈表操作的具體的函數(shù)定義和主函數(shù)。程序中的單鏈表(帶頭結(jié)點(diǎn))結(jié)點(diǎn)為結(jié)構(gòu)類型,結(jié)點(diǎn)值為整型。要求:同學(xué)們可參考指導(dǎo)書實(shí)驗(yàn)2程序、教材算法及其他資料編程實(shí)現(xiàn)單鏈表相關(guān)操作。必須包括單鏈表創(chuàng)建、輸出、插入、
2、刪除操作,其他操作根據(jù)個(gè)人情況增減。三、算法分析與設(shè)計(jì)。1.創(chuàng)建單鏈表:LinkedListLinkedListCreat()創(chuàng)建鏈表函數(shù)LinkedListL=LinkedListInit(),p,r;調(diào)用初始化鏈表函數(shù)r=L;r指向頭結(jié)點(diǎn)使用malloc函數(shù)動(dòng)態(tài)分配存儲(chǔ)空間,指針p指向新開辟的結(jié)點(diǎn),并將元素存放到新開辟結(jié)點(diǎn)的數(shù)據(jù)域,p=(LinkedList)malloc(sizeof(LNode));p->data=x;r->next=p;將新的結(jié)點(diǎn)鏈接到頭結(jié)點(diǎn)r之后r=p;r指向p結(jié)點(diǎn)scan
3、f("%d",&x);滿足條件循環(huán)輸入鏈表元素while(x!=flag)當(dāng)輸入不為-1時(shí)循環(huán)r->next=NULL;returnL;將鏈表結(jié)尾賦空值,返回頭結(jié)點(diǎn)L^頭結(jié)點(diǎn)LA1A2L^An......文案大全實(shí)用文檔2.單鏈表插入voidLinkedListInsert(LinkedListL,inti,ElemTypex)鏈表插入函數(shù)(L頭指針,i插入位置,x插入元素)LinkedListp,s;定義結(jié)構(gòu)體類型指針p,sj=1;p=L;定義整型j計(jì)數(shù),尋找插入位置,p指針指向頭結(jié)點(diǎn)p=p->ne
4、xt;j++;滿足條件時(shí)p指針后移,j自加1while(p&&j
5、
6、jdata=x;s->next=p->next;p->next=s;3.單鏈表的刪除:bcpp->n
7、ext=p->next->next;文案大全實(shí)用文檔三、運(yùn)行結(jié)果1.單鏈表初始化2.創(chuàng)建單鏈表3.求鏈表長度4.檢查鏈表是否為空5.遍歷鏈表6.從鏈表中查找元素7.從鏈表中查找與給定元素值相同的元素在順序表中的位置文案大全實(shí)用文檔1.向鏈表中插入元素插入元素之后的鏈表2.從鏈表中刪除元素刪除位置為6的元素(是3)3.清空單鏈表三、實(shí)驗(yàn)體會(huì)經(jīng)過這次單鏈表基本操作實(shí)驗(yàn),自己的編程能力有了進(jìn)一步的提高,認(rèn)識(shí)到自己以前在思考一個(gè)問題上思路不夠開闊,不能靈活的表達(dá)出自己的想法,雖然在打完源代碼之后出現(xiàn)了一些錯(cuò)誤
8、,但是經(jīng)過認(rèn)真查找、修改,最終將錯(cuò)誤一一修正,主要是在寫算法分析的時(shí)候出現(xiàn)了障礙,經(jīng)過從網(wǎng)上查找資料,自己也對(duì)程序做了仔細(xì)的分析,對(duì)單鏈表創(chuàng)建、插入、刪除算法畫了詳細(xì)的N-S流程圖。文案大全實(shí)用文檔三、C語言版原代碼#include#include/*定義ElemType為int類型*/typedefintElemType;#defineTRUE1#defineFALSE0#defineNULL0#defineflag-1/*單鏈表的結(jié)點(diǎn)類型*/typedefst
9、ructLNode{ElemTypedata;structLNode*next;}LNode,*LinkedList;/*初始化單鏈表*/LinkedListLinkedListInit(){LinkedListL;L=(LinkedList)malloc(sizeof(LNode));L->next=NULL;returnL;}/*清空單鏈表*/voidLinkedListClear(LinkedListL){L->next=NULL;printf("鏈表已經(jīng)清空");}/*檢查單鏈表是否為空*
10、/intLinkedListEmpty(LinkedListL){if(L->next==NULL)returnTRUE;elsereturnFALSE;}/*遍歷單鏈表*/voidLinkedListTraverse(LinkedListL){LinkedListp;文案大全實(shí)用文檔p=L->next;if(p==NULL)printf("單鏈表為空表");else{printf("鏈表中的元素為:");while(p!=NULL){print