資源簡介 (共26張PPT)2.2 鏈表(第二課時)單擊此處添加副標題鏈表的創建可以使用如下Python代碼創建一個空鏈表:head = -1#頭指針指向-1,表示鏈表為空#創建一個空鏈表Item頭指針變量head:存儲鏈表第一個節點在列表中的索引Item = [ ]鏈表的創建節點列表模擬單向鏈表的節點:data next根據實際問題的特點規劃好節點的數據區域和指針區域列表[data,next]Item.append([data,next])通過列表的append( )函數將節點保存到列表中#索引:len(Item)-1單向鏈表的創建Item = [ [“張強”, ] , [“杜剛”, ] ]head = _______#存儲第一個節點在列表中的索引1-1索引0索引1張強head杜剛0單向鏈表節點的訪問鏈表中訪問指定節點只能通過頭指針指向的第一個節點開始訪問,其他節點通過節點間的指針依次訪問。data1data2data3headdata4訪問變量訪問變量訪問變量訪問變量訪問變量== -1 :訪問完最后一個節點訪問變量:當前訪問節點在列表中的索引Item = [ [“杜剛”, 2 ] , [“杜強”, 3 ],[“李彤”, -1 ] , [“李豐”, 0 ]]head = 1#依次訪問并輸出鏈表各節點數據p=head #訪問變量,表示當前訪問節點的索引print(Item[p][0],end=” ”) #輸出當前節點數據p=Item[p][1] #訪問變量迭代更新為后繼的#按照p的功能:當前訪問節點的數據區域為:當前訪問節點的后繼指針為:Item[p][0]Item[p][1]Item = [ [“杜剛”, 2 ] , [“杜強”, 3 ],[“李彤”, -1 ] , [“李豐”, 0 ]]head = 1#依次訪問并輸出鏈表各節點數據p=head #訪問變量,表示當前訪問節點的索引#按照p的功能:當前訪問節點的數據區域為:當前訪問節點的后繼指針為:Item[p][0]while p!=-1:print(Item[p][0],end=” ”) #輸出當前節點數據p=Item[p][1] #訪問變量迭代更新為后繼的Item[p][1]杜強 李豐 杜剛 李彤Item = [ [“杜剛”, 2 ] , [“杜強”, 3 ],[“李彤”, -1 ] , [“李豐”, 0 ]]head = 1#依次訪問并輸出鏈表各節點數據p=head #訪問變量,表示當前訪問節點的索引#按照p的功能:當前訪問節點的數據區域為:當前訪問節點的后繼指針為:Item[p][1]while p!=-1 :print(Item[p][0],end=” ”) #輸出當前節點數據p=Item[p][1] #訪問變量迭代更新為后繼的p!= -1 and Item[p][0]!=”杜剛” :杜強 李豐Item[p][0]單向鏈表節點的插入data1 next1data3 next3headdata1 next1data2 next2data3 next3插入到鏈表最前面data2 -1data3 next3-1next2插入到相鄰兩個節點之間插入到鏈表最后面單向鏈表節點的插入data1 next1data3 next3head插入到鏈表最前面#新節點Item[r][1] = head#頭指針head = r已知鏈表的第一個節點的索引保存在head變量上,新節點在列表中的索引是r索引r單向鏈表節點的插入插入到鏈表相鄰兩個節點之間data1 next1data2 next2data3 next3某相鄰兩個節點在列表中索引分別為pre和p,在其之間插入一個新節點;新節點在列表中索引為r#新節點Item[r][1] = p#前驅節點Item[pre][1] = r索引pre索引r索引p單向鏈表節點的插入插入到鏈表最后面#新節點Item[r][1] = -1#前驅節點Item[p][1] = r已知鏈表的最后一個節點的索引為p,新節點在列表中的索引是rdata2 -1data3 -1-1索引rr單向鏈表節點的刪除data1 nextdata2 nextdata3 nextdata2 nextdata3 -1data1 nextdata2 next刪除第一個節點head刪除中間節點刪除最后一個節點單向鏈表節點的刪除變量head保存了第一個節點在列表中索引#頭指針head = Item [head] [1]刪除第一個節點data1 nextdata2 nexthead單向鏈表節點的刪除data1 nextdata2 nextdata3 next待刪除節點在列表中索引為p,其前驅節點在列表列表中索引為pre索引pre索引p#前驅節點Item[pre][1] = Item [p] [1]刪除中間節點單向鏈表節點的刪除待刪除節點的前驅節點在列表中索引為pre#前驅節點Item[pre][1] = -1刪除最后一個節點data2 nextdata3 -1索引pre-1請同學們暫停視頻,回顧單向鏈表基本操作的實現,嘗試并完成“學習任務單”:一、體驗系統的基本功能。簡易外來人員進出校園登記系統入校登記出校移除按進校時間查看還在校內的外來人員簡易外來人員進出校園登記系統基本功能架構圖節點規劃姓名+手機號 后繼指針Item = [ ]head = -1(1)創建空鏈表,鏈表名為Item,頭指針為head節點實現:[姓名+手機號,后繼指針](2)杜剛、張強、李彤三人依次進校將新節點插入到鏈表末尾姓名+手機號 后繼指針或者len(Item)-1[data1,-1]head=0節點實現:[姓名+手機號,后繼指針](2)杜剛、張強、李彤三人依次進校將新節點插入到鏈表末尾姓名+手機號 后繼指針或len(Item)-1Item[0][1]=1node=[data2,-1] #在鏈表末尾插入節點,所以新節點后繼指針為-1Item.append(node)#將新節點保存到列表中,索引為1(2)杜剛、張強、李彤三人依次進校將新節點插入到鏈表末尾len(Item)-1或len(Item)-1Item[1][1]=2node=[data3,-1] #在鏈表末尾插入節點,所以新節點后繼指針為-1Item.append(node)#將新節點保存到列表中,索引為2單鏈表中刪除指定節點節點(3)李彤、杜剛依次出校訪問到該節點的前驅節點→刪除節點訪問到李彤所在節點時結束訪問:·p變量保存了待刪節點的索引·pre保存了前驅節點的索引if p==head:#刪除第一個節點head=Item[p][1]elif Item[p][1]==-1:#刪除最后一個節點Item[pre][1]=-1else:#刪除中間節點Item[pre][1]=Item[p][1](3)李彤、杜剛依次出校(4)按進校時間查看在校內人員遍歷單向鏈表課堂小結用列表模擬單向鏈表的基本操作應用鏈表編程解決實際問題【鞏固練習】完成課后作業練習【拓展練習】回顧課堂上的實踐過程和程序,嘗試在資源包中“簡易外來人員進出登記系統.py”文件繼續完善項目。課后作業 展開更多...... 收起↑ 資源預覽 縮略圖、資源來源于二一教育資源庫