版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、 實習(xí)報告“含頭結(jié)點的單鏈表”演示程序 (1) 、程序的功能和特點主要實現(xiàn)的功能有:1.查找給定關(guān)鍵字的結(jié)點; 2.在單鏈表第l個結(jié)點位置插入一個新結(jié)點; 3.刪除第l個結(jié)點; 4.顯示全部鏈表; 5.求鏈表的長度;(二)、程序的算法設(shè)計 “比較”算法:1. 【邏輯結(jié)構(gòu)與存儲結(jié)構(gòu)設(shè)計】邏輯結(jié)構(gòu):每個元素之間是相鄰的;存儲結(jié)構(gòu):元素存儲于任意的存儲單元中,可以是連續(xù)的,也可以是不 連續(xù)的;2.【基本操作設(shè)計】元素存儲域任意的存儲單元中,這時需要在存儲元素本身信息的同時,還要存儲下一個元素的位置。由此構(gòu)成一個鏈狀結(jié)構(gòu),成為鏈表。將表示數(shù)據(jù)元素和下一個元素位置的結(jié)構(gòu),如下所示:數(shù)據(jù)元素 指針域稱為鏈
2、表的結(jié)點指針域用來存放下一個元素的地址,這樣就可以保證表的連續(xù)性3. 【算法設(shè)計】指向第一個結(jié)點查找給定關(guān)鍵字的結(jié)點 否不是當(dāng)前所查找的結(jié)點并且沒有到鏈尾null否是指針域!=null移動指針,使其指向下一個元素是返回結(jié)點在單鏈表第l個結(jié)點位置插入一個新結(jié)點第l個結(jié)點,新結(jié)點id 建立新結(jié)點指針p后移l個結(jié)點把p之后鏈表接到新結(jié)點的后面把新結(jié)點接在p所指結(jié)點的后面刪除第l個結(jié)點是判斷鏈表是否為空否null使指針p指向所要刪結(jié)點的前驅(qū)指向要刪結(jié)點指向要刪結(jié)點的后驅(qū)4. 【高級語言代碼】 查找給定關(guān)鍵字的結(jié)點,返回結(jié)點linknodenode p=first; /指向第一結(jié)點/不是當(dāng)前結(jié)點并且沒有
3、到鏈尾while(p.idata!=id&&p.next!=null)p=p.next;if(p.next!=null) return p;else return null; 在單鏈表第l個結(jié)點位置插入一個新結(jié)點linknodenode newlinknodenode= new linknodenode(id,fd); /誕生新結(jié)點newlinknodenodeint i=1;linknodenode p=first; /指向第一結(jié)點/p指針后移l個結(jié)點while(p.next!=null && i+<l) p=p.next;newlinknodenode
4、.next=p.next; /把p之后的鏈表接在新結(jié)點的后面p.next=newlinknodenode; /把新結(jié)點接在p所指結(jié)點的后面return true;刪除第l個結(jié)點if(isempty() return null;linknodenode p=first; /指向第一個結(jié)點int i=1;while(p.next!=null && i+<l)p=p.next; /指向要刪結(jié)點的前驅(qū)linknodenode q=p.next; /指向要刪結(jié)點p.next=q.next; /p指向要刪結(jié)點的后繼return q; /返回已刪結(jié)點(三)、程序中類的設(shè)計 “l(fā)inkn
5、odelist”類:1. 【邏輯結(jié)構(gòu)與存儲結(jié)構(gòu)】邏輯結(jié)構(gòu):每個元素之間是相鄰的;存儲結(jié)構(gòu):元素存儲于任意的存儲單元中,可以是連續(xù)的,也可以是不 連續(xù)的;2. 【主要成員變量說明】 public linknode first; /單鏈表的頭指針【主要成員方法說明】 查找給定關(guān)鍵字的結(jié)點,返回結(jié)點 public linknode linknodefind(int id) 在單鏈表第l個結(jié)點位置插入一個新結(jié)點public boolean insertwhere(int l,int id) 刪除第l個結(jié)點public linknode deletewhere(int l)顯示全部鏈表public vo
6、id listdisplay()返回鏈表長度(結(jié)點數(shù))public int listlength()4. 【高級語言代碼】 鏈表的結(jié)點類class linknodepublic int idata; /數(shù)據(jù)域(結(jié)點關(guān)鍵字)public linknode next; /指針域(指向下一結(jié)點)public linknode() /頭結(jié)點構(gòu)造方法idata=-1;/數(shù)據(jù)域賦值/指針域自動初始化為nullpublic linknode(int id) /結(jié)點構(gòu)造方法idata=id; /數(shù)據(jù)域賦值public void linknodedisplay() /顯示自身的數(shù)據(jù)域system.out.pri
7、ntln(""+idata+""); 單鏈表類class linknodelist public linknode first; /單鏈表的頭指針public linknodelist () /構(gòu)造方法first=new linknode(); /空單鏈表,頭指針指向頭結(jié)點public boolean isempty() /單鏈表是否為空return (first.next=null); /頭結(jié)點的指針為空/查找給定關(guān)鍵字的結(jié)點,返回結(jié)點public linknode linknodefind(int id) linknode p=first; /指向第
8、一結(jié)點/不是當(dāng)前結(jié)點并且沒有到鏈尾while(p.idata!=id&&p.next!=null)p=p.next;if(p.next!=null) return p;else return null; /在單鏈表第l個結(jié)點位置插入一個新結(jié)點public boolean insertwhere(int l,int id) linknode newlinknode= new linknode(id); /誕生新結(jié)點newlinknodeint i=1;linknode p=first; /指向第一結(jié)點/p指針后移l個結(jié)點while(p.next!=null &&
9、i+<l) p=p.next;newlinknode.next=p.next; /把p之后的鏈表接在新結(jié)點的后面p.next=newlinknode; /把新結(jié)點接在p所指結(jié)點的后面return true;/刪除第l個結(jié)點public linknode deletewhere(int l) if(isempty() return null;linknode p=first; /指向第一個結(jié)點int i=1;while(p.next!=null && i+<l)p=p.next; /指向要刪結(jié)點的前驅(qū)linknode q=p.next; /指向要刪結(jié)點p.next=q
10、.next; /p指向要刪結(jié)點的后繼return q; /返回已刪結(jié)點/顯示全部鏈表public void listdisplay() linknode p=first.next; /指向第一個結(jié)點system.out.println("顯示鏈表:從前到后");while(p!=null) p.linknodedisplay(); /顯示結(jié)點p=p.next;system.out.println("*");/返回鏈表長度(結(jié)點數(shù))public int listlength() linknode p=first.next; /指向頭結(jié)點int i=0;wh
11、ile(p!=null)p=p.next;i+;return i;/置鏈表為空表public void makeempty() first.next=null; public static void main(string args) linknodelist s1=new linknodelist(); /空鏈表誕生s1.insertwhere(1,12); /從指定位置插入結(jié)點s1.insertwhere(2,34);s1.insertwhere(3,53);s1.insertwhere(4,32);s1.insertwhere(3,76);s1.listdisplay();s1.deletewhere(4); /刪除第4個結(jié)點s1.listdi
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 1.2《風(fēng)景談》【中職專用】高一語文(高教版2023基礎(chǔ)模塊上冊)
- (2024)年產(chǎn)噸鋰電池負(fù)極材料石墨化項目可行性研究報告寫作模板(一)
- 解析:內(nèi)蒙古通遼市科爾沁左翼中旗2024-2025學(xué)年七年級上學(xué)期期中語文試題(原卷版)-A4
- 2024(半成品預(yù)制菜篇)餐飲供應(yīng)鏈指南
- 《藥品經(jīng)濟(jì)學(xué)》課件
- 《LED的電學(xué)指標(biāo)》課件
- 養(yǎng)老院老人情感關(guān)懷制度
- 《法制教育勢在必行》課件
- 幼兒園教育活動設(shè)計與指導(dǎo)語言課件-模塊一 理論篇 幼兒園語言教育概述
- 《神圣時間》課件
- 遼寧省名校聯(lián)盟2024年高三12月份聯(lián)合考試 語文試卷(含答案解析)
- 《垂體瘤規(guī)范化診治》課件
- 圖文轉(zhuǎn)換-圖表(小題訓(xùn)練)(解析版)-2025年部編版中考語文一輪復(fù)習(xí)
- 七上語文期末考試復(fù)習(xí)計劃表
- 2024兒童青少年抑郁治療與康復(fù)痛點調(diào)研報告 -基于患者家長群體的調(diào)研
- 大數(shù)據(jù)+治理智慧樹知到期末考試答案章節(jié)答案2024年廣州大學(xué)
- 江蘇省建筑與裝飾工程計價定額(2014)電子表格版
- 山東省煙臺市2023-2024學(xué)年高二上學(xué)期期末考試數(shù)學(xué)試卷(含答案)
- 2024年中國鐵路南寧局集團(tuán)招聘筆試參考題庫含答案解析
- 國家開放大學(xué)化工節(jié)能課程-復(fù)習(xí)資料期末復(fù)習(xí)題
- 2023年云南滇中新區(qū)事業(yè)單位招聘30人筆試參考題庫(共500題)答案詳解版
評論
0/150
提交評論