精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

Python數據結構之雙鏈表

開發(fā) 后端
雙向鏈表也叫雙鏈表,是鏈表的一種,它的每個數據結點中都有兩個指針,分別指向直接后繼和直接前驅。所以,從雙向鏈表中的任意一個結點開始,都可以很方便地訪問它的前驅結點和后繼結點。

[[411390]]

本文轉載自微信公眾號「python與大數據分析」,作者一只小小鳥鳥。轉載本文請聯系python與大數據分析公眾號。

雙向鏈表也叫雙鏈表,是鏈表的一種,它的每個數據結點中都有兩個指針,分別指向直接后繼和直接前驅。所以,從雙向鏈表中的任意一個結點開始,都可以很方便地訪問它的前驅結點和后繼結點。

雙鏈表和單鏈表在查找和遍歷上沒什么區(qū)別,在新增節(jié)點、添加節(jié)點、刪除節(jié)點上需要注意前后節(jié)點的修改,比單鏈表會復雜一些,一不小心就繞暈了。

方法和單鏈表是一致的。

isempty(self) 鏈表是否為空

length(self) 鏈表長度

travel(self) 遍歷整個鏈表

add(self,item) 鏈表頭部添加元素

append(self,item) 鏈表尾部添加元素

insert(self,item,index) 指定位置添加元素

deletebyitem(self,item) 根據數據項刪除節(jié)點

deletebyindex(self,index) 根據索引位置刪除節(jié)點

search(self,item) 根據數據項查找節(jié)點是否存在

update(self,index,item) 暫無實現

getitem(self,index) 獲取索引位置對應的數據項

getindex(self,item) 獲取數據項對應的索引位置

如下:

  1. #!/usr/bin/env python 
  2. # -*- coding: UTF-8 -*- 
  3. #                     _ooOoo_ 
  4. #                   o8888888o 
  5. #                    88" . "88 
  6. #                 ( | -  _  - | ) 
  7. #                     O\ = /O 
  8. #                 ____/`---'\____ 
  9. #                  .' \\| |// `. 
  10. #                 / \\|||:|||// \ 
  11. #               / _|||||-:- |||||- \ 
  12. #                | | \\\ - /// | | 
  13. #              | \_| ''\---/'' | _/ | 
  14. #               \ .-\__ `-` ___/-. / 
  15. #            ___`. .' /--.--\ `. . __ 
  16. #         ."" '< `.___\_<|>_/___.' >'""
  17. #       | | : `- \`.;`\  _ /`;.`/ - ` : | | 
  18. #          \ \ `-. \_ __\ /__ _/ .-` / / 
  19. #      ==`-.____`-.___\_____/___.-`____.-'== 
  20. #                     `=---=' 
  21. ''
  22. @Project :pythonalgorithms  
  23. @File :doublelinklist.py 
  24. @Author :不勝人生一場醉 
  25. @Date :2021/7/13 23:00  
  26. ''
  27.  
  28.  
  29. class Node(object): 
  30.     def __init__(self, data): 
  31.         self.prev = None 
  32.         self.data = data 
  33.         self.next = None 
  34.  
  35.  
  36. class DoubleLinkList(object): 
  37.     def __init__(self): 
  38.         self.header = None 
  39.         self.currentnum = 0 
  40.  
  41.     def isempty(self): 
  42.         return self.header == None 
  43.  
  44.     def travel(self): 
  45.         tempnode = self.header 
  46.         while tempnode != None: 
  47.             print("{}".format(tempnode.data), end=" "
  48.             tempnode = tempnode.next 
  49.         print("\r"
  50.  
  51.     def add(self, item): 
  52.         node = Node(item) 
  53.         if self.isempty(): 
  54.             self.header = node 
  55.             self.currentnum += 1 
  56.             return 
  57.         node.next = self.header 
  58.         self.header.prev = node 
  59.         self.header = node 
  60.         self.currentnum += 1 
  61.  
  62.     def append(self, item): 
  63.         if self.isempty(): 
  64.             self.add(item) 
  65.             self.currentnum += 1 
  66.             return 
  67.         tempnode = self.header 
  68.         while tempnode.next is not None: 
  69.             tempnode = tempnode.next 
  70.         node = Node(item) 
  71.         node.prev = tempnode 
  72.         tempnode.next = node 
  73.         self.currentnum += 1 
  74.  
  75.     def length(self): 
  76.         length = 0 
  77.         tempnode = self.header 
  78.         while tempnode is not None: 
  79.             length += 1 
  80.             tempnode = tempnode.next 
  81.         return length 
  82.  
  83.     def search(self, item): 
  84.         tempnode = self.header 
  85.         while tempnode != None: 
  86.             if tempnode.data == item: 
  87.                 return True 
  88.             else
  89.                 tempnode = tempnode.next 
  90.         return False 
  91.  
  92.     def update(self, index, item): 
  93.         pass 
  94.  
  95.     def getitem(self, index): 
  96.         if index > self.currentnum or index <= 0: 
  97.             raise IndexError("{} is not find in Linklist".format(index)) 
  98.         tempnode = self.header 
  99.         i = 1 
  100.         while i < index
  101.             tempnode = tempnode.next 
  102.             i += 1 
  103.         if tempnode.next == None: 
  104.             return -1 
  105.         else
  106.             return tempnode.data 
  107.  
  108.     def getindex(self, item): 
  109.  
  110.         tempnode = self.header 
  111.         i = 0 
  112.         flag = False 
  113.         while tempnode != None: 
  114.             i += 1 
  115.             if tempnode.data == item: 
  116.                 flag = True 
  117.                 return i 
  118.             else
  119.                 tempnode = tempnode.next 
  120.         if flag == False
  121.             return 0 
  122.  
  123.     def insert(self, item, index): 
  124.         tempnode = self.header 
  125.         if index > self.currentnum + 1 or index <= 0: 
  126.             raise IndexError("{} is not find in Linklist".format(index)) 
  127.         # 指定位置為第一個即在頭部插入 
  128.  
  129.         if index == 1: 
  130.             self.add(item) 
  131.         elif index > self.currentnum - 1: 
  132.             self.append(item) 
  133.         else
  134.             node = Node(item) 
  135.             for i in range(1, index - 1): 
  136.                 tempnode = tempnode.next 
  137.             node.next = tempnode.next 
  138.             node.prev = tempnode 
  139.             tempnode.next.prev = node 
  140.             tempnode.next = node 
  141.         self.currentnum += 1 
  142.  
  143.     def deletebyitem(self, item): 
  144.         tempnode = self.header 
  145.         while tempnode != None: 
  146.             if tempnode.data == item: 
  147.                 self.currentnum -= 1 
  148.                 if tempnode == self.header: 
  149.                     self.header = self.header.next 
  150.                     if tempnode.next
  151.                         tempnode.next.prev = None 
  152.                     return 
  153.                 if tempnode.next is None: 
  154.                     tempnode.prev.next = tempnode.next 
  155.                     return 
  156.                 tempnode.prev.next = tempnode.next 
  157.                 tempnode.next.prev = tempnode.prev 
  158.                 return 
  159.             tempnode = tempnode.next 
  160.  
  161.     def deletebyindex(self, index): 
  162.  
  163.         if index > self.currentnum or index <= 0: 
  164.             raise IndexError("{} is not find in Linklist".format(index)) 
  165.  
  166.         i = 1 
  167.         tempnode = self.header 
  168.  
  169.         if index == 1: 
  170.             self.header = tempnode.next 
  171.             if tempnode.next
  172.                 tempnode.prev = None 
  173.             self.currentnum -= 1 
  174.             return 
  175.  
  176.         while tempnode.next and i < index
  177.             tempnode = tempnode.next 
  178.             i += 1 
  179.         if tempnode.next is None: 
  180.             tempnode.prev.next = tempnode.next 
  181.             self.currentnum -= 1 
  182.             return 
  183.         if i == index
  184.             tempnode.prev.next = tempnode.next 
  185.             tempnode.next.prev = tempnode.prev 
  186.             self.currentnum -= 1 
  187.  
  188.  
  189. if __name__ == '__main__'
  190.     a = DoubleLinkList() 
  191.     a.add(1)  # 1 
  192.     a.travel() 
  193.     a.add(2) 
  194.     a.travel() 
  195.     a.append(4) 
  196.     a.travel() 
  197.     a.append(3) 
  198.     a.travel() 
  199.     print(a.length()) 
  200.     print(a.search(1)) 
  201.     print(a.getindex(4)) 
  202.     print(a.getindex(5)) 
  203.     print(a.getitem(2)) 
  204.     # print(a.getitem(5)) 
  205.     # IndexError: 5 is not find in Linklist 
  206.     a.insert(5, 1) 
  207.     a.travel() 
  208.     a.insert(6, 5) 
  209.     a.travel() 
  210.     a.insert(7, 2) 
  211.     a.travel() 
  212.     a.deletebyitem(7) 
  213.     a.travel() 
  214.     a.deletebyitem(6) 
  215.     a.travel() 
  216.     a.deletebyitem(5) 
  217.     a.travel() 
  218.     a.deletebyindex(2) 
  219.     a.travel() 
  220.     a.deletebyindex(3) 
  221.     a.travel() 
  222.     a.deletebyindex(1) 
  223.     a.travel() 

調試了2、3個小時的bug,才跑通。

運行如下:

  1. C:\python\pyproject\pythonalgorithms\venv\Scripts\python.exe C:/python/pyproject/pythonalgorithms/doublelinklist.py 
  2. 1  
  3. 2 1  
  4. 2 1 4  
  5. 2 1 4 3  
  6. True 
  7. 5 2 1 4 3  
  8. 5 2 1 4 6 3  
  9. 5 7 2 1 4 6 3  
  10. 5 2 1 4 6 3  
  11. 5 2 1 4 3  
  12. 2 1 4 3  
  13. 2 4 3  
  14. 2 4  
  15. 4  
  16.  
  17. Process finished with exit code 0 

 

鏈表頭部增加節(jié)點示意圖

 

責任編輯:武曉燕 來源: python與大數據分析
相關推薦

2021-07-13 07:52:03

Python數據結構

2017-03-01 13:58:46

Python數據結構鏈表

2012-02-02 10:21:05

單鏈表nexthead

2021-08-03 10:24:59

數據跳躍鏈表結構

2021-05-12 14:09:35

鏈表數據結構線性結構

2021-04-12 15:47:00

數據結構算法鏈表

2021-07-16 07:57:34

Python數據結構

2021-12-21 08:19:29

數據結構算法鏈表相交

2021-01-06 08:03:00

JavaScript數據結構

2021-10-29 11:27:52

鏈表數據結構算法

2021-07-11 12:06:43

python數據結構

2021-01-28 07:33:34

JavaScript鏈表數據

2023-03-28 07:44:23

數據結構數組

2021-03-10 08:42:19

Java數據結構算法

2023-10-06 20:21:28

Python鏈表

2009-07-02 14:59:28

Java考研試題

2021-09-12 17:31:17

Python數據結構

2018-06-06 08:54:23

數據結構存儲

2024-10-11 16:43:05

高并發(fā)數據結構技巧

2022-01-18 19:13:52

背包問題數據結構算法
點贊
收藏

51CTO技術棧公眾號

精品少妇久久久| 超碰超碰在线观看| 天堂av中文在线资源库| 首页欧美精品中文字幕| 久久综合88中文色鬼| 中文字幕人妻一区二区三区| 日本免费一区二区三区四区| 亚洲欧美激情视频在线观看一区二区三区| 国产成人精品免费视频大全最热| aaaaaa毛片| 欧美理论在线| 在线播放日韩专区| 黄色在线免费播放| а天堂中文最新一区二区三区| 五月天精品一区二区三区| 亚洲高清资源综合久久精品| 国产黄色片av| 欧美aaaaaa午夜精品| 欧美激情小视频| 欧美自拍偷拍网| 女人抽搐喷水高潮国产精品| 欧美另类高清zo欧美| 免费黄色福利视频| 国产后进白嫩翘臀在线观看视频| 亚洲国产成人午夜在线一区| 国产欧美一区二区三区另类精品| 91精品国产乱码久久久| 天堂成人国产精品一区| 97精品在线视频| 欧美激情一区二区视频| 欧美激情欧美| 在线播放日韩欧美| 在哪里可以看毛片| 欧美一区二区三区红桃小说| 欧美成人综合网站| 国产传媒免费观看| 欧美xxxx性| 91成人在线精品| 人妻熟妇乱又伦精品视频| 男人添女人下部高潮视频在线观看| 欧美国产精品一区| 日韩经典在线视频| 国产综合在线观看| 91视频你懂的| 久久综合婷婷综合| 亚洲 欧美 自拍偷拍| 不卡高清视频专区| 国产精品一区二区三区在线观| av中文字幕第一页| 国产一区二区三区高清播放| 国产有码一区二区| 91精品中文字幕| 精品影视av免费| 国产精自产拍久久久久久蜜| 在线视频1卡二卡三卡| 免费观看在线色综合| 国产精品久久中文| 在线观看av大片| 久久国产婷婷国产香蕉| 成人黄色片在线| 国产熟女精品视频| 国产成人亚洲综合a∨婷婷| 97视频中文字幕| 亚洲精品一区二区口爆| 成人高清免费观看| 欧美极品色图| av男人的天堂在线| ...xxx性欧美| 日本中文字幕在线视频观看| 麻豆mv在线观看| 色视频一区二区| 色乱码一区二区三区在线| 亚洲美女色播| 欧美成人三级电影在线| 精品国产av色一区二区深夜久久 | 在线视频这里只有精品| 91精品在线观看国产| 欧美俄罗斯乱妇| 成人精品免费在线观看| 日韩电影网1区2区| 91中文字幕在线观看| 亚洲精品久久久狠狠狠爱| 9久草视频在线视频精品| 日本视频一区二区不卡| 国产区在线观看| 午夜激情一区二区三区| 亚洲色图久久久| 亚洲**毛片| 亚洲美女av网站| 天天操天天摸天天舔| 亚洲国产专区校园欧美| 国产精品久久久久久久久影视| 国产精品毛片一区二区在线看舒淇 | 完美搭档在线观看| 清纯唯美日韩| 午夜精品福利电影| 91国产精品一区| 2019国产精品| www国产免费| 春暖花开亚洲一区二区三区| 欧美一区二区高清| 91网站免费入口| 国产综合久久| 国产精品影片在线观看| 欧美一区二区在线观看视频| 欧美韩国日本不卡| 久久精品国产sm调教网站演员| 不卡亚洲精品| 日韩激情片免费| 久草视频中文在线| 久久精品国产免费| 蜜桃传媒视频麻豆第一区免费观看 | 免费涩涩18网站入口| 欧美一区在线观看视频| 中文字幕综合在线| 91美女免费看| 懂色av一区二区在线播放| 亚洲一区综合| 天堂久久午夜av| 精品在线小视频| 久久综合色综合| 国产精品综合网| 亚洲一区二区四区| 日韩一区二区三区免费| 日韩国产在线看| 日韩精品一区二区三| 国产福利91精品| 亚洲美女自拍偷拍| 黄色片网站在线免费观看| 亚洲大胆人体大胆做受1| 欧美性xxxx极品hd欧美风情| 国内av免费观看| 欧美激情欧美| 国产欧美精品在线| seseavlu视频在线| 91福利社在线观看| 日韩丰满少妇无码内射| 久久精品麻豆| 欧美精品欧美精品| 都市激情亚洲一区| 亚洲欧美综合另类中字| 亚洲天堂一区在线| 91蜜桃传媒精品久久久一区二区| 欧美乱大交xxxxx潮喷l头像| 亚洲一区 二区| 欧美激情va永久在线播放| 国产日韩欧美视频在线观看| 亚洲欧洲日韩一区二区三区| xxx国产在线观看| 国产精品第二十页| 这里只有精品在线| 91在线高清视频| a毛片在线播放| 日韩美一区二区三区| 免费看一级一片| 成人黄页在线观看| 国产97在线 | 亚洲| 校花撩起jk露出白色内裤国产精品| 68精品久久久久久欧美| 欧美孕妇性xxxⅹ精品hd| 91黄色免费观看| 国产又粗又长免费视频| 精品亚洲成a人在线观看| 黄色污污在线观看| 大奶一区二区三区| 青青青国产精品一区二区| 成人在线免费观看| 69p69国产精品| 国产亚洲精久久久久久无码77777| 成人免费va视频| av7777777| 成人激情电影在线| 91传媒免费看| 天堂网在线最新版www中文网| 亚洲欧美日韩一区在线| 一级片在线免费观看视频| 亚洲精品久久久蜜桃| 性色av蜜臀av浪潮av老女人| 性久久久久久| 大桥未久一区二区| 加勒比色老久久爱综合网| 国产精品扒开腿做爽爽爽的视频| 青青青青在线| 亚洲国产中文字幕久久网| 久久久久久无码精品大片| √…a在线天堂一区| av网站有哪些| 久草这里只有精品视频| 国产在线精品91| 欧美成人激情| 久久国产主播精品| 疯狂欧洲av久久成人av电影| …久久精品99久久香蕉国产| 日本在线观看视频| 亚洲精品久久久一区二区三区| 黄色大全在线观看| 亚洲午夜久久久久久久久电影网 | 欧美又黄又嫩大片a级| 1024成人| 一区二区视频在线观看| 99精品中文字幕在线不卡| 国产精品美女久久| av福利导福航大全在线| 久久久久999| 久青青在线观看视频国产| 日韩三级高清在线| 一区二区视频网| 天天色综合天天| 97成人资源站| 国产欧美一二三区| 国产激情第一页| 国产成+人+日韩+欧美+亚洲| 五月婷婷激情久久| 亚洲欧美网站| 欧洲精品在线播放| 五月久久久综合一区二区小说| 蜜桃av久久久亚洲精品| a级日韩大片| 91色精品视频在线| 粉嫩91精品久久久久久久99蜜桃| 欧美一级电影久久| 国产污视频在线播放| 欧美高清视频在线观看| 午夜视频在线免费观看| 亚洲天堂网站在线观看视频| 手机看片福利在线| 精品动漫一区二区三区在线观看| 国产美女精品视频国产| 欧美日本视频在线| 国产成人av免费| 色婷婷香蕉在线一区二区| 五月婷婷开心网| 亚洲成人www| 国产精品23p| 亚洲一区二区精品久久av| 极品魔鬼身材女神啪啪精品| 国产精品久久网站| 亚洲欧美另类日本| 国产精品免费aⅴ片在线观看| 精品人伦一区二区| 国产亚洲欧美在线| 一级黄色录像毛片| 欧美高清一级片在线观看| 欧美做受xxxxxⅹ性视频| 久久日一线二线三线suv| wwwwww日本| 国产欧美久久久精品影院| 乐播av一区二区三区| 国产视频一区在线播放| 精品成人无码一区二区三区| 日本一区二区三区四区在线视频 | 五月天婷婷社区| 日韩成人在线视频网站| 欧美美乳在线| 国产亚洲欧美日韩一区二区| 国产私拍精品| 在线亚洲男人天堂| 成人午夜在线影视| 欧美精品激情在线| 国内激情视频在线观看| 欧美在线免费观看| av成人在线播放| 亚洲一区二区免费| 东京久久高清| 日韩成人av网站| 欧美第一精品| 男人天堂新网址| 香蕉av777xxx色综合一区| 日本免费观看网站| 国内精品久久久久影院薰衣草| 久久久国产精品久久久| 99精品视频在线免费观看| 国产肥白大熟妇bbbb视频| 国产精品系列在线| 欧美片一区二区| 欧美特级www| 91福利免费视频| 亚洲激情视频网| 成人午夜电影在线观看| 久99久在线视频| 精品国产免费人成网站| 成人福利免费观看| 国产精品毛片视频| 日本一区不卡| 欧美精品不卡| 国产理论在线播放| 高清不卡一区二区| 一级黄色录像毛片| 亚洲国产视频在线| 中文字幕一级片| 精品成a人在线观看| av大片在线看| 26uuu亚洲伊人春色| 亚洲美女色播| 欧美凹凸一区二区三区视频| 久久久久免费av| 日韩在线视频在线观看| 国产一区二区福利| 人妻av无码一区二区三区| 亚洲免费观看在线视频| 男人的天堂av网站| 精品国产乱子伦一区| 九色视频网站在线观看| 久久6免费高清热精品| 日韩欧美一区二区三区免费观看| 成人女人免费毛片| 99久久九九| 久久久久狠狠高潮亚洲精品| 国产乱淫av一区二区三区| 少妇无套高潮一二三区| 精品久久久久久国产| av手机免费看| 北条麻妃一区二区三区中文字幕 | 91中文字幕在线| 成人中文视频| 国产福利一区视频| 99久久免费视频.com| 青青草原免费观看| 欧美老年两性高潮| 丁香在线视频| 欧美综合在线第二页| 都市激情亚洲欧美| 国产一二三四区在线观看| 美女mm1313爽爽久久久蜜臀| 中文字幕一区二区人妻在线不卡| 亚洲午夜精品在线| 狠狠躁夜夜躁av无码中文幕| 久久亚洲成人精品| 综合欧美精品| 亚洲一二三区在线| 麻豆一区二区在线| 超碰人人人人人人人| 欧亚洲嫩模精品一区三区| 欧美日韩影视| 国产91免费看片| 免费成人网www| 国产a级片免费观看| 久久久精品2019中文字幕之3| 成人精品免费在线观看| 日韩电影免费观看中文字幕| 国内激情视频在线观看| 久久99精品久久久久久久久久| 亚洲高清激情| www.免费av| 色先锋aa成人| 福利视频在线导航| 国产精品入口免费视频一| 日韩精品dvd| 国产女同无遮挡互慰高潮91| 亚洲人成小说网站色在线| 国产视频一区二区三区四区五区| 美女黄色丝袜一区| av不卡一区| 一女被多男玩喷潮视频| 久久综合精品国产一区二区三区 | 日韩.欧美.亚洲| 青青草国产精品97视觉盛宴| 伊人影院综合网| 制服丝袜av成人在线看| 日本在线视频www鲁啊鲁| 国产伦精品一区二区三区视频免费 | 天天天天天天天干| 日日狠狠久久偷偷四色综合免费| 伊人久久大香伊蕉在人线观看热v 伊人久久大香线蕉综合影院首页 伊人久久大香 | 伊人亚洲精品| 成人av在线不卡| 91麻豆视频网站| 中文字幕一区二区三区波野结| www.日韩不卡电影av| 亚洲精品a区| 成年网站在线免费观看| 国产精品久久久久国产精品日日| 99视频免费看| 91国产精品视频在线| 欧美色爱综合| 性一交一黄一片| 日韩欧美aaa| 成人免费视屏| 久久久久久久久久久久久久一区| 日本成人在线不卡视频| 九九九久久久久| 亚洲人成电影网站| 欧美久久亚洲| 亚洲 中文字幕 日韩 无码| 亚洲精品国产成人久久av盗摄| 天天干天天舔天天射| 国产精品在线看| 1024日韩| 国产一二三四视频| 亚洲成人国产精品| 老司机精品视频网| 精品国产一二三四区| 日韩一区欧美一区| 日韩在线免费播放| 亚洲xxxxx电影| 天使萌一区二区三区免费观看| 国产高潮国产高潮久久久91| 中文欧美字幕免费| 中文字幕色一区二区| 激情亚洲综合在线|