資源簡介 (共29張PPT)2.2 鏈表課前學(xué)習(xí)任務(wù)結(jié)合數(shù)組的特性和基本操作,針對如下例子設(shè)計數(shù)組以組織和存儲關(guān)鍵數(shù)據(jù):① 處理全班同學(xué)的信息,時常需要進行信息訪問;② 處理學(xué)校外來人員信息,進校時登記信息,出校時移除信息。鏈表基本概念鏈表是將需要處理的數(shù)據(jù)對象以節(jié)點的形式,通過指針串聯(lián)在一起的一種數(shù)據(jù)結(jié)構(gòu)。節(jié)點結(jié)構(gòu)數(shù)據(jù)區(qū)域 指針區(qū)域保存數(shù)據(jù)元素保存相鄰節(jié)點的存儲地址某節(jié)點后繼節(jié)點前驅(qū)節(jié)點鏈表基本概念根據(jù)節(jié)點中指針的數(shù)量可以分為:單向鏈表:雙向鏈表:循環(huán)鏈表:data nextprev data nextdata nextdatan nextn···鏈表的特性① 鏈表占用的空間不固定;② 每個鏈表中一般要有一個頭指針,以實現(xiàn)鏈表的引用和邊界處理;③ 同一鏈表中每個節(jié)點的結(jié)構(gòu)均相同。存儲地址 數(shù)據(jù)區(qū)域 后繼指針0 “黃剛” 11 “李豐” -12 “王林” 03 “吳堅” 2單鏈表存儲結(jié)構(gòu)head單鏈表示意圖吳堅2第一個節(jié)點head王林0第二個節(jié)點黃剛1第三個節(jié)點李豐-1第四個節(jié)點(尾節(jié)點)請同學(xué)們暫停視頻,嘗試并完成“學(xué)習(xí)任務(wù)單”中的“學(xué)習(xí)任務(wù)一”。【學(xué)習(xí)任務(wù)一】認識鏈表為了滿足鏈表能在兩個方向都能進行遍歷的需求,請在圖1為每個節(jié)點補充正確的前驅(qū)指針。存儲地址 數(shù)據(jù)區(qū)域 前驅(qū)指針 后繼指針0 “黃剛” 11 “李豐” -12 “王林” 03 “吳堅” -1 2圖1 雙向鏈表存儲結(jié)構(gòu)圖head單鏈表示意圖吳堅2第一個節(jié)點地址3head王林0第二個節(jié)點地址2黃剛1第三個節(jié)點地址0李豐-1第四個節(jié)點地址1320【小要求】與數(shù)組的相關(guān)操作進行比較,各自的操作效率誰優(yōu)誰劣?為什么?鏈表的基本操作鏈表創(chuàng)建節(jié)點訪問節(jié)點插入節(jié)點刪除鏈表的基本操作——鏈表創(chuàng)建數(shù)據(jù)區(qū)域 后繼指針鏈表結(jié)構(gòu):“姓名+手機號”頭指針head:指向第一個節(jié)點單向鏈表校外人員進出登記:信息插入和刪除鏈表的基本操作——節(jié)點插入data1 next1data2 next2data3 next3修改新節(jié)點和前驅(qū)節(jié)點的指針data1 next1data3 next3data2 -1data3 next3head插入到第一個節(jié)點之前插入尾節(jié)點之后-1next2修改新節(jié)點指針和頭指針修改新節(jié)點和前驅(qū)節(jié)點的指針插入到兩個節(jié)點之間①“李彤”入校;存儲地址 數(shù)據(jù)區(qū)域 后繼指針0 “杜剛+1xx.” -11 “張強+1xx.” 0head2 “李彤+1xx.” -12張強0head杜剛-1李彤-1新節(jié)點2鏈表的基本操作——節(jié)點插入②“李豐”在“杜剛”之前入校;存儲地址 數(shù)據(jù)區(qū)域 后繼指針0 “杜剛+1xx.” 21 “張強+1xx.” 02 “李彤+1xx.” -1head3 “李豐+1xx.” 03張強0head杜剛2鏈表的基本操作——節(jié)點插入李彤-1李豐0新節(jié)點3data1 nextdata2 nextdata3 next刪除中間節(jié)點修改前驅(qū)節(jié)點的后繼指針,讓待刪節(jié)點的前驅(qū)和后繼直接相連鏈表的基本操作——節(jié)點刪除data2 nextdata3 nextdata1 nextdata2 next刪除第一個節(jié)點head刪除最后一個節(jié)點請同學(xué)們暫停視頻,嘗試并完成“學(xué)習(xí)任務(wù)單”上“【學(xué)習(xí)任務(wù)二】鏈表基本操作”。【學(xué)習(xí)任務(wù)二】鏈表基本操作存儲地址 數(shù)據(jù)區(qū)域 后繼指針0 “杜剛+1xx.” 21 “張強+1xx.” 32 “李彤+1xx.” -13 “李豐+1xx.” 0(1)“杜剛”出校,請在如下繪制節(jié)點鏈接關(guān)系,并在上述存儲結(jié)構(gòu)圖中進行相應(yīng)修改:head張強3head杜剛2李彤-1李豐022【學(xué)習(xí)任務(wù)二】鏈表基本操作存儲地址 數(shù)據(jù)區(qū)域 后繼指針1 “張強+1xx.” 32 “李彤+1xx.” -13 “李豐+1xx.” 2(2)“胡潔”在“張強”之前入校,請在如下修改節(jié)點鏈接關(guān)系,并在上述存儲結(jié)構(gòu)圖中進行相應(yīng)修改head張強3head李彤-1李豐24 “胡潔+1xx.” 1胡潔1head【學(xué)習(xí)任務(wù)二】鏈表基本操作(3)“李彤”出校,請在如下修改節(jié)點鏈接關(guān)系,并在上述存儲結(jié)構(gòu)圖中進行相應(yīng)修改:胡潔1head李豐2李彤-1張強3存儲地址 數(shù)據(jù)區(qū)域 后繼指針1 “張強+1xx.” 32 “李彤+1xx.” -13 “李豐+1xx.” 24 “胡潔+1xx.” 1head-1-1【學(xué)習(xí)任務(wù)二】鏈表基本操作(4)“胡潔”出校,請在如下修改節(jié)點鏈接關(guān)系,并在上述存儲結(jié)構(gòu)圖中進行相應(yīng)修改:胡潔1head李豐-1張強3存儲地址 數(shù)據(jù)區(qū)域 后繼指針1 “張強+1xx.” 33 “李豐+1xx.” -14 “胡潔+1xx.” 1headhead操作 數(shù)組 鏈表訪問插入刪除較高與數(shù)組的操作做比較,各自的操作效率(選填:較高/較低)較高較高較低較低較低【學(xué)習(xí)任務(wù)二】鏈表基本操作請同學(xué)們暫停視頻,嘗試并完成“學(xué)習(xí)任務(wù)單”上“【學(xué)習(xí)任務(wù)三】實踐鞏固——約瑟夫問題”。【學(xué)習(xí)任務(wù)三】實踐鞏固——約瑟夫問題n個人排成一圈,從某個人開始,按照順時針方向從1開始依次編號。從編號為1的人開始順時針“1,2,3,···,m,1,2,3,···,m”報數(shù),報到m(m大于1)的人退出圈子。這樣不斷循環(huán)下去,圈子里的人數(shù)將不斷減少。由于人數(shù)是有限的(n個),因此最終會只剩下一個人,試問最后剩下的人的初始編號是多少?分析上述問題,按照如下步驟進行實踐:(1)抽象與建模 該問題中的關(guān)鍵數(shù)據(jù)是: 簡述問題解決的計算模型:所有人員的初始編號① 形成1.2.3...n的循環(huán)序列② 從編號1開始計數(shù),每過1個編號計數(shù)值加1,當計數(shù)到m時將該編號從循環(huán)序列中移除;并從該編號循環(huán)后一編號從1開始重新計數(shù)。重復(fù)這個過程,直到循環(huán)序列中只剩下一個編號,該編號即為最后剩下人員的初始編號。分析上述問題,按照如下步驟進行實踐:(2)設(shè)計鏈表與算法鏈表設(shè)計:鏈表中節(jié)點的數(shù)據(jù)區(qū)域保存指針區(qū)域保存【學(xué)習(xí)任務(wù)三】實踐鞏固——約瑟夫問題初始編號后繼節(jié)點地址單向循環(huán)鏈表尾節(jié)點指針區(qū)域指向第一個節(jié)點頭指針指向編號1所在節(jié)點(2)設(shè)計鏈表與算法算法設(shè)計【學(xué)習(xí)任務(wù)三】實踐鞏固——約瑟夫問題①從第一個節(jié)點開始報數(shù),每過1個節(jié)點報數(shù)值加1,將計到m的鏈表節(jié)點刪除;繼續(xù)從后繼節(jié)點開始,重新從1報數(shù)。重復(fù)這個過程,直至鏈表中只剩下一個節(jié)點。②此時頭指針所指節(jié)點中的數(shù)據(jù)區(qū)域即保存了最終留下的初始編號。存儲地址 數(shù)據(jù)區(qū)域 后繼指針0 11 22 33 44 512340head(3)模擬實現(xiàn)①共5個人圍成圈,創(chuàng)建由5個節(jié)點組成的單循環(huán)鏈表,完善如下存儲結(jié)構(gòu)。【學(xué)習(xí)任務(wù)三】實踐鞏固——約瑟夫問題②從鏈表第一個節(jié)點依次報數(shù),每報到3的節(jié)點從鏈接關(guān)系中刪除。并在上述結(jié)構(gòu)中及時修改相關(guān)節(jié)點的指針。最后留在圈子內(nèi)的初始編號: 。存儲地址 數(shù)據(jù)區(qū)域 后繼指針0 1 11 2 22 3 33 4 44 5 0←報數(shù)值:1←報數(shù)值:2←報數(shù)值:33←報數(shù)值:1←報數(shù)值:2←報數(shù)值:31←報數(shù)值:1←報數(shù)值:2←報數(shù)值:31←報數(shù)值:1←報數(shù)值:2←報數(shù)值:33headhead【學(xué)習(xí)任務(wù)三】實踐鞏固——約瑟夫問題4head課堂小結(jié)鏈表概念特性基本操作應(yīng)用鏈表解決實際問題的一般步驟第一節(jié)課后作業(yè)完成課后作業(yè)練習(xí) 展開更多...... 收起↑ 資源預(yù)覽 縮略圖、資源來源于二一教育資源庫