国产探花免费观看_亚洲丰满少妇自慰呻吟_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 說明到了列表的尾部

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 胶州市| 吴江市| 南投市| 商南县| 额敏县| 修文县| 年辖:市辖区| 宜春市| 佛坪县| 镇远县| 中超| 清水河县| 江油市| 广宁县| 双桥区| 土默特右旗| 冕宁县| 沂水县| 深水埗区| 德格县| 石景山区| 东城区| 西峡县| 延长县| 湖口县| 焦作市| 新乡市| 绥滨县| 吉安县| 荥阳市| 萍乡市| 涞源县| 迁安市| 纳雍县| 都昌县| 贺州市| 沈阳市| 青冈县| 秦皇岛市| 兴海县| 翼城县|