數(shù)據(jù)結(jié)構(gòu) 頭插法和尾插法建立鏈表_第1頁
數(shù)據(jù)結(jié)構(gòu) 頭插法和尾插法建立鏈表_第2頁
數(shù)據(jù)結(jié)構(gòu) 頭插法和尾插法建立鏈表_第3頁
數(shù)據(jù)結(jié)構(gòu) 頭插法和尾插法建立鏈表_第4頁
數(shù)據(jù)結(jié)構(gòu) 頭插法和尾插法建立鏈表_第5頁
已閱讀5頁,還剩6頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、實(shí)驗(yàn)一鏈表的建立及基本操作方法實(shí)現(xiàn)一、【實(shí)驗(yàn)?zāi)康摹?、理解和掌握單鏈表的類型定義方法和結(jié)點(diǎn)生成方法。2、掌握利用頭插法和尾插法建立單鏈表和顯示單鏈表元素的算法。3、掌握單鏈表的查找(按序號)算法。4、掌握單鏈表的插入、刪除算法。二、【實(shí)驗(yàn)內(nèi)容】1、利用頭插法和尾插法建立一個(gè)無頭結(jié)點(diǎn)單鏈表,并從屏幕顯示單鏈表元素列表。2、利用頭插法和尾插法建立一個(gè)有頭結(jié)點(diǎn)單鏈表,并從屏幕顯示單鏈表元素列表。3、將測試數(shù)據(jù)結(jié)果用截圖的方式粘貼在程序代碼后面。重點(diǎn)和難點(diǎn):1)尾插法和頭插法建立單鏈表的區(qū)別。2)建立帶頭結(jié)點(diǎn)和無頭結(jié)點(diǎn)單鏈表的區(qū)別。3)帶頭結(jié)點(diǎn)和無頭結(jié)點(diǎn)單鏈表元素顯示方法的區(qū)別三、【算法思想】1)利用

2、頭插法和尾插法建立一個(gè)無頭結(jié)點(diǎn)單鏈表鏈表無頭結(jié)點(diǎn),則在創(chuàng)建鏈表時(shí),初始化鏈表指針L=NULLo當(dāng)用頭插法插入元素時(shí),首先要判斷頭指針是否為空,若為空,則直接將新結(jié)點(diǎn)賦給 L,新結(jié)點(diǎn)next指向空,即L=p,p-next=NULL,若表中己經(jīng)有元素了,則將新結(jié)點(diǎn)的next 指向首結(jié)點(diǎn),然后將新結(jié)點(diǎn)賦給L即(p-next=L,L=p)o當(dāng)用尾插法插入元素時(shí),首先設(shè)置一個(gè)尾指針tailPointer以便隨時(shí)指向最后一個(gè)結(jié)點(diǎn), 初始化tailPointer和頭指制,一樣即tailPointei-=Lo插入元素時(shí),首先判斷鏈表是否為空,若 為空,則直接將新結(jié)點(diǎn)賦給L即L=p,若不為空,else將最后一個(gè)

3、元素的next指向新結(jié)點(diǎn) 即tailPointei-next=p,然后跳出這個(gè)if,else語句,將新結(jié)點(diǎn)next指向空,并且將tailPomter 指向新結(jié)點(diǎn)即 p-next=NULL,tailPoiiitei-p。2)利用頭插法和尾插法建立一個(gè)有頭結(jié)點(diǎn)單鏈表鏈表有頭結(jié)點(diǎn),則在創(chuàng)建鏈表時(shí),初始化鏈表指針L-next = NULLo與無頭結(jié)點(diǎn)區(qū)別 在于,判斷鏈表為空是根據(jù)L-next是否為空。用頭插法插入元素時(shí),要判斷鏈表是否為空,若為空則將新結(jié)點(diǎn)next指向空,作為表 尾,若不為空,則直接插入,將新結(jié)點(diǎn)next指向頭結(jié)點(diǎn)next的指向,再將頭結(jié)點(diǎn)next指向 新結(jié)點(diǎn)即 p-next=L-ne

4、xt,L-next=p。用尾插法插入元素時(shí),首先也要設(shè)置一個(gè)尾指針tadPomter以便隨時(shí)指向最后一個(gè)結(jié)點(diǎn), 初始化tadPomtei-L,與無頭結(jié)點(diǎn)區(qū)別就只是插入第一個(gè)元素時(shí)有區(qū)別。插入元素時(shí),不需 要判斷鏈表是否為空,直接進(jìn)行插入,代碼tailPouiter-next=p,p-next=NULL,tailPointei-pc.帶頭結(jié)點(diǎn)和無頭結(jié)點(diǎn)單鏈表元素顯示方法的區(qū)別:區(qū)別在于,顯示時(shí)帶頭結(jié)點(diǎn)是從頭結(jié)點(diǎn)next開始即p=L-next,而無頭結(jié)點(diǎn)鏈表是直接 從L開始即p=Lo四、【源程序代碼】1)利用頭插法和尾插法建立一個(gè)無頭結(jié)點(diǎn)單鏈表#iiiclude#iiicludetypedef s

5、tnict LNode(int data;struct LNode *next;LNode, *LinkList;/*尾插法*/void creatListTailInsert(LuikList &L. int n)(LinkList p. tailPointer;mt ij/計(jì)數(shù)L = (LuikList)malloc(sizeof(LNode);if(!L) exit(O);/分配空間失敗則退出程序L = NULL; /no headcninodetailPomter = L; 把尾賦給尾指針printf(Mtaillist(%d): n,n);fbr(i = 0;i data);if(L

6、 = NULL) L = p; 當(dāng)鏈表為空,L賦給第一個(gè)結(jié)點(diǎn)else tailPomter-next = p; 將新結(jié)點(diǎn)插入尾部;p-next = NULL;tailPomter = p; 插入的結(jié)點(diǎn)變?yōu)槲步Y(jié)點(diǎn)/*頭插法*/void creatListHeadInseit(LmkList &L, mt n)(LinkList p;mt i/計(jì)數(shù)L = (LuikList)malloc(sizeof(LNode);if(!L) exit(O);/分配空間失敗則退出程序L = NULL; /no headcninodeprintf(Mheadlist(%d):,n);fbr(i = 0;i nex

7、t = L;else p-next = NULL;L = p; 將頭結(jié)點(diǎn)next指向賦給新結(jié)點(diǎn)/*依次顯示表中所有元素*/void getAllElem(LinkList &L, int n)LinkList p;mt i = 0;P = L;wlule(p & i data);p = p-next;ifpnntf(”iT);void main()(LinkListheadList;LinkListtailList;mt count; 插入元素個(gè)數(shù)pnntf(Mcount=H);scanf(H%d,&count);creatListHeadIiiseit(headList, count);cr

8、eatListTailhiseil(tailList, count);printf(MheadList:H);getAllElem(headList5 count);pnntf(MtailList:n);getAllElem(tailList, count);2)利用頭插法和尾插法建立一個(gè)有頭結(jié)點(diǎn)單鏈表ftincludeftincludetypedef struct LNodeint data;struct LNode *next;LNode, *LinkList;/*尾插法*/void creatListTaillnsert(LinkList &L, int n) LinkList p, t

9、ailPointer;int i;計(jì)數(shù)L = (LinkList)malloc(sizeof(LNode);if (!L) exit (0);分配空間失敗則退出程序L-next = NULL; /headcrunodetailPointer = L; 把尾賦給尾指針printf(taillist(%d):, n);for(i = 0;i data);p-next = tailPointernext:tailPointernext = p;tailPointer = p; /插入的結(jié)點(diǎn)變?yōu)槲步Y(jié)點(diǎn)/*頭插法*/void creatListHeadlnsert(LinkList &L, int n)

10、(LinkList p;int i;計(jì)數(shù)L = (LinkList)malloc(sizeof(LNode):if(!L) exit(0);分配空間失敗則退出程序L-next = NULL; /headcrunodeprintf (headlist(%d):, n);for(i = 0;i data);p-next = L-next:將頭結(jié)點(diǎn)next指向賦給新結(jié)點(diǎn)Lnext = p;)*依次顯示表中所有元素*/void getAHElem(LinkList &L, int n) (LinkList p;int i = 0;p = Lnext;while(p & i data);p = pnex

11、t:i+;printf Cn,z);)void main () LinkListheadList;LinkListtailList;int count; /插入元素個(gè)數(shù)printf(count=);scanf (d, &count);creatListHeadlnsert(headList, count);creatListTaillnsert(tailList, count);printf(headList:);getAHElem(headList, count);printf(tailList:);getAHElem(tailList, count);五、【數(shù)據(jù)測試】輸入:8插入8個(gè)元素輸入八個(gè)數(shù)字頭插法和尾插法區(qū)別在于,頭插法輸入數(shù)據(jù)是逆序存入,尾插法是順序存入:帶頭結(jié)點(diǎn)和不帶頭結(jié)點(diǎn)在數(shù)據(jù)顯示上基本沒區(qū)別,區(qū)別在于初始化鏈表和插入元素時(shí),頭指針的操作不同。1)利用頭插法和尾插法建立一個(gè)無頭結(jié)點(diǎn)單鏈表Down t =8Blic:C D:C- Free 3.5UempDa-taExperi men! 1.2.exe1-iP|x|pn8lt2 3 4 5 67ML |GrjCTrwcxjoraciGMrxGTGXcrazrxicrxzraccrx*2)利用頭插法和尾插法建立一個(gè)有頭結(jié)點(diǎn)單鏈表 I:K4c:C D:C- Free 3.5U

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(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ǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論