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