版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
軟件技術基礎線性結構——鏈表制作主講段景山鏈表的典型形態(tài)請用5分鐘快速閱讀教材第9頁至第12頁。回答以下問題:什么是頭結點?教材中的單鏈表插入算法與教案中的插入算法有什么大的區(qū)別——即頭結點有什么用?鏈表的典型形態(tài)1.2.5鏈表的典型形態(tài)1、單鏈表如前所述2、帶頭節(jié)點的單鏈表頭節(jié)點:是一個特殊的鏈點,數據內容無效鏈點指針指向鏈表頭/////a1...頭節(jié)點aian...a1an......ai頭指針鏈表的典型形態(tài)帶頭節(jié)點的單鏈表幾個容易混淆的概念第一個元素節(jié)點、頭指針、頭節(jié)點、鏈表頭a1ai+1anheadtailai-1......ai/////a1...aian...第一個元素節(jié)點頭指針頭節(jié)點head第一個元素節(jié)點、鏈表頭鏈表的典型形態(tài)帶頭節(jié)點單鏈表的操作特點插入和刪除算法不必考慮在表首進行時,需要更改頭指針的特殊處理——把第一元素鏈點地址記錄在某個鏈點的next域內/////a1...aian...headp=head;p->next=p->next->next;while(location>1&&p!=NULL){…}如果location為1,表首節(jié)點將被刪除p為什么教材中使用**而教案中沒有使用?鏈表的定義不同教材中僅定義了鏈點,沒有定義鏈表結構,一個鏈表僅由一個頭指針開始教案中還定義了鏈表結構在結構中除了有鏈表頭指針,還有……typedefstructlist_type{ node_type*head; node_type*tail; intlength;}list_type;headtaillengtha1a2為什么教材中使用**而教案中沒有使用?教材voidmain(){node*head;createsl(&head);……}voidcreatesl(node**h){*h=firstnode;……}教案voidmain(){list_typelist;create_l(&list);……}voidcreate_l(list_type*l){l->head=firstnode;……}headheadheadtaillengthheadtaillengtha1為什么教材中使用**而教案中沒有使用?本質是一樣的:要在調用的子函數中改變頭指針的指向改變指針的指向,即改變指針變量的內容要改變指針的內容,必須將指針變量的地址傳入教材中是將指針的地址傳入--指針的指針教案中將地址所在的結構的地址傳入其它常用的鏈表形式請用1分鐘的時間快速閱讀教材第12頁至15頁,回答問題:鏈表還有哪些形式,有什么特點?雙向鏈表1.3雙向鏈表特點:每一個鏈點包含兩個指針,前趨指針后繼指針a1……h(huán)eadtailNa2NPanPa1NPP:priorN:next雙向鏈表1.3.1雙向鏈表的定義typedefstructdouble_link_node_type{ structdouble_link_node_type*prior; structdouble_link_node_type*next; elemtypedata;}dl_node_type;typedefstructdouble_link_list_type{ dl_node_type*head; dl_node_type*tail; intlength;}dl_list_type;鏈點的定義鏈表的定義雙向鏈表插入1.3.2雙向鏈表的插入操作問題描述:在第i個元素前插入新元素試試小紙片的方法能不能幫助思考ai-1NPaiNPanewNP50li55duan61yang66ma70liu61667050NULL44anewNULL66NULL505561head=55雙向鏈表插入1.3.2雙向鏈表的插入操作ai-1NPaiNP問題描述:在第i個元素前插入新元素anewNP1、anew->next=ai2、ai-1->next=anew3、anew->prior=ai-14、ai->prior=anewpanew->next=p;p->prior->next=anew;anew->prior=p->prior;p->prior=anew;僅使用p指針法一:雙向鏈表插入1.3.2雙向鏈表的插入操作ai-1ai問題描述:在第i個元素前插入新元素anewp2、anew->next=p;1、p->prior->next=anew;3、anew->prior=p->prior;4、p->prior=anew;法二:雙向鏈表插入1.3.2雙向鏈表的插入操作ai-1ai問題描述:在第i個元素前插入新元素anewp2、anew->next=p;3、anew->prior=p->prior;1、p->prior=anew;法三:在操作雙向鏈表時同樣要注意操作順序雙向鏈表插入算法實現(略)找到ai執(zhí)行插入操作體會插入操作有多種方式實現,步驟比較復雜雙向鏈表的使用靈活,可進可退練習:前面的四個步驟的組合順序里,哪些是正確的,哪些是錯誤的?通過這個練習,加強鏈表指針操作的訓練雙向鏈表刪除1.3.3雙向鏈表的刪除操作問題描述:刪除第i個元素ai-1aiai+1ppp(1)(2)(3)(1)當p在ai-1處時p->next->next->prior=p;p->next=p->next->next雙向鏈表刪除1.3.3雙向鏈表的刪除操作問題描述:刪除第i個元素ai-1aiai+1ppp(1)(2)(3)(2)當p在ai處時課堂作業(yè)請完成算法(3)當p在ai+1處時循環(huán)鏈表1.4循環(huán)鏈表a1ai+1anheadtailai-1......ai將鏈表頭尾相接headerai+1antaila1...ai…對循環(huán)鏈表的遍歷可以從任何一個節(jié)點開始循環(huán)鏈表例,將兩個循環(huán)鏈表連接起來a1ai+1antail1ai-1......aib1tail2......node_type*merge_list(tail1,tail2){}tail1->next=tail2->next;tail2->next=tail1->next;???returntail2;temp=tail1->next;tail1->next=tail2->next;tail2->next=temp;擴展:靜態(tài)鏈表“在數組內”的鏈表指針域不是真正的指針,而是記錄后繼元素在數組內的下標和我們的“小紙條”很相近liduanyangmaliu2340-101234作業(yè)作業(yè):5、在一個從小到大按序排列的雙向鏈表中,將新元
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 銀行系統軟件開發(fā)面試常見問題及答案
- 數據策略面試題及答案
- 醫(yī)療器械銷售經理的應聘指導與面試題解析
- 廣西貴百河2025-2026學年高一上學期12月聯考歷史試題
- 2025年濱水區(qū)域景觀改造項目可行性研究報告
- 2025年社區(qū)服務信息平臺可行性研究報告
- 2025年家居裝飾設計與智能化改造項目可行性研究報告
- 2026年張家界航空工業(yè)職業(yè)技術學院單招職業(yè)技能測試題庫含答案詳解
- 學校:我們的成長之家
- 2026年沙洲職業(yè)工學院單招職業(yè)適應性考試題庫參考答案詳解
- 基礎有機化學實驗智慧樹知到期末考試答案章節(jié)答案2024年浙江大學
- 2024年北京市人力資源市場薪酬狀況白皮書
- JTG∕T F30-2014 公路水泥混凝土路面施工技術細則
- 數字孿生智慧水利整體規(guī)劃建設方案
- 業(yè)委會換屆問卷調查表
- 慕課《如何寫好科研論文》期末考試答案
- 國開作業(yè)《建筑測量》學習過程(含課程實驗)表現-參考(含答案)33
- 幼兒園中班安全教育《這些東西能吃嗎》
- 電力線路維護檢修規(guī)程
- 華信咨詢-中國斗輪堆取料機行業(yè)展望報告
- (完整word版)高分子材料工程專業(yè)英語第二版課文翻譯基本全了
評論
0/150
提交評論