国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

Python雙向循環鏈表實現方法分析

2020-02-15 22:35:26
字體:
來源:轉載
供稿:網友

本文實例講述了Python雙向循環鏈表實現方法。分享給大家供大家參考,具體如下:

最近身邊的朋友在研究用python來實現數據結構。遇到一個問題就是雙向循環鏈表的實現,改指向的時候總是發蒙。

我自己嘗實現了一個python的雙向循環鏈表。附上代碼,希望對大家有幫助。

如果不懂什么是雙向循環鏈表的伙伴,需要補習一下數據結構的基礎之后哦~~~

在python當中 用一個類Node 來實現鏈表的節點,節點數據有三個變量:

prev:前驅指針: 用于指向當前節點前一個節點 next: 后繼指針  用于指向當前節點后一個節點 item: 值, 用于存儲該節點要存的數值

當前節點的前一個節點我們叫他前驅,后一個節點我們叫他后繼。

在鏈表類當中,我們有一個變量head是鏈表的頭指針

我們拿著鏈表的頭head,就可以對他進行一些列操作:( 由于是雙向循環鏈表,修改指針特別容易出錯,我盡量說的細致,方便大家參考)

判斷空:is_empty()

如果頭指針head沒有指向則鏈表是空的 否則不是空的

在頭部添加元素: add(item)

1 新建一個節點 里面的值是item。

2 放入頭部:

2.1 如果鏈表是空的,node的next和prev都指向自己,然后head再指向node

在尾部添加元素: append(item)

1 創建一個新節點node 里面的值是item

2 放入尾部:

2.1 如果鏈表空,則執行頭部添加add就可以

2.2 鏈表非空:

2.2.1 node的next指向head

2.2.2 node的prev指向head的prev

2.2.3 head的prev元素的next指向node

2.2.4 head的prev指向改為node

2.2.5 head指向node  更換了頭部

指定位置添加元素: insert( pos , item )

1 新建一個節點node 里面的值是item

2 找到合適的位置插進去:

2.1 如果pos <= 0 還小,那就執行頭插方法 add()

2.2 如果pos >= 鏈表長度, 那就執行尾部插入 append()

2.3 如果pos位置在鏈表的中間:

2.3.1 定義一個臨時變量temp 按照傳入的pos找到要插入的位置的前一個元素

2.3.2 node的prev設為temp,node的next設為temp的next

2.3.3 temp的next指向的節點的prev改為node

2.3.4 temp的next改為node

得到鏈表長度: length()

1 我們設置一個臨時變量temp初始設為head , 設置一個計數器count 初始為 0

2 令count自增1 然后temp改指向自己的下一個元素 一直到temp遇到None 為止,temp到了鏈表的最后一個元素

通過這樣的方式,統計出一共有多少個節點返回

遍歷鏈表數據: travelji()

1 設置一個臨時變量temp初始化設為head

2 temp 每次輸出自己指向元素的值,然后在指向自己的下一個元素,一直temp為None 說明到了列表的尾部

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 理塘县| 临漳县| 无棣县| 平原县| 灵寿县| 孝昌县| 崇信县| 金秀| 神木县| 石泉县| 盘山县| 奉贤区| 广灵县| 错那县| 富源县| 临桂县| 和林格尔县| 东乡县| 桓仁| 通化县| 青河县| 泗水县| 惠来县| 东乌珠穆沁旗| 莱州市| 德庆县| 茂名市| 枣阳市| 凉城县| 盘锦市| 林芝县| 洛川县| 个旧市| 上犹县| 阜康市| 永定县| 巨野县| 武穴市| 绥宁县| 芜湖县| 二手房|