精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

日韩在线a电影| 日韩第一区第二区| 国产亲近乱来精品视频| 国产日韩精品视频| 91香蕉视频网| 国产精品115| 在线观看av不卡| 亚洲高潮无码久久| 外国精品视频在线观看| 久久成人免费| 久久91亚洲精品中文字幕奶水 | 高清成人在线| 亚洲毛片av在线| 欧美日韩另类丝袜其他| 国产精品久久久久久久免费看 | 亚洲视频在线观看三级| 精品久久精品久久| 国产精品久久婷婷| 国产精品久久777777毛茸茸| 视频一区视频二区国产精品| 漂亮人妻被黑人久久精品| 成人在线观看免费播放| 黄色成人av在线| 日韩人妻精品一区二区三区| 久久电影视频| 东方欧美亚洲色图在线| 国产欧美日韩丝袜精品一区| jizz国产免费| 欧美在线影院| 最近2019年手机中文字幕| 中文字幕免费高清视频| 美女日韩一区| 欧美久久久久久蜜桃| 日本黄网站免费| 国产理论在线| 亚洲国产成人tv| 日本高清视频免费在线观看| 免费网站免费进入在线| 国产女人水真多18毛片18精品视频| 国产另类自拍| 国产xxxx在线观看| 日韩电影在线免费观看| 欧美综合在线第二页| 国产精品变态另类虐交| 午夜激情一区| 久久国产精品免费视频 | 青青久在线视频| 成人av网址在线| 成人欧美视频在线| 精品国产亚洲av麻豆| 激情六月婷婷综合| 91精品美女在线| 亚洲视频一区二区三区四区| 日韩和的一区二区| 国产精品久久精品| 欧美性猛交xxxx乱大交hd | 日本电影亚洲天堂| 国产日产精品一区二区三区| 老鸭窝91久久精品色噜噜导演| 国产91|九色| 久久夜色精品亚洲| 国产精品日本| 人妖精品videosex性欧美| 伊人中文字幕在线观看| 国产亚洲在线| 热久久99这里有精品| 无码人妻av一区二区三区波多野| 麻豆久久婷婷| 亚洲大片在线观看| 中文字幕の友人北条麻妃| 超碰免费在线播放| 亚洲在线观看免费| 免费看国产一级片| 中文字幕一区久| 欧美丝袜丝交足nylons| 亚洲综合欧美在线| 精品久久亚洲| 亚洲精品一区二区三区在线观看| 国产精品嫩草av| 在线视频亚洲专区| 色妞色视频一区二区三区四区| 日韩av手机在线免费观看| 欧美成人首页| 57pao国产成人免费| 中文字幕人妻色偷偷久久| 国产在线一区二区| 好吊色欧美一区二区三区四区| 男人天堂网在线观看| 国产精品初高中害羞小美女文| 中文字幕在线中文| 国产日韩电影| 欧美一区日韩一区| 日韩一级视频在线观看| 成人羞羞动漫| 久久久久久噜噜噜久久久精品| 日本熟女毛茸茸| 久久9热精品视频| 成人免费视频观看视频| 成人免费黄色网页| 亚洲丰满少妇videoshd| 欧美日韩在线免费播放| 亚洲精品一二三**| 中文字幕欧美在线| 国产一级二级毛片| 免费一级片91| 精品久久久久久中文字幕动漫| 伊人免费在线| 亚洲成a人在线观看| 免费涩涩18网站入口| 成人性生交大片免费看中文视频| 国产一区二区激情| 精品小视频在线观看| 蜜臀av性久久久久av蜜臀妖精 | 日韩精品导航| xxxxx成人.com| 四虎成人在线观看| 国产jizzjizz一区二区| 亚洲欧洲一区二区在线观看| 日韩精品极品| 日韩欧美一区在线| 欧美美女性生活视频| 亚洲欧美日韩国产| 超碰97在线播放| 精产国品自在线www| 色婷婷综合久久久久中文一区二区 | 成人性生活视频| 精品黑人一区二区三区久久| 国精品人伦一区二区三区蜜桃| 麻豆精品网站| 久久精品二区| 97天天综合网| 日韩天堂在线观看| 日韩三级在线观看视频| 日韩av不卡一区二区| 免费av一区二区三区| 91福利区在线观看| 日韩一二三四区| 国产精品三区在线观看| 久久精品国产亚洲a| 日本一区视频在线播放| 性国裸体高清亚洲| 亚洲精品国产综合久久| 国产精品theporn动漫| 国产成人精品免费网站| 成人污网站在线观看| www一区二区三区| 精品国产一区二区三区久久狼5月 精品国产一区二区三区久久久狼 精品国产一区二区三区久久久 | 日韩欧美一区二区三区在线观看 | 成人免费激情视频| 91精彩视频在线观看| 在线观看不卡一区| xxxxx99| 青青草成人在线观看| 日韩在线三级| 亚洲一区二区小说| 日韩中文字幕在线播放| 97超碰人人模人人人爽人人爱| 国产精品久久久久久久久免费桃花 | 亚洲精品一区国产精品| 国产福利亚洲| 久久在线免费视频| 亚洲h视频在线观看| 亚洲国产精品一区二区www| 国产xxxx视频| 久久99伊人| 少妇特黄a一区二区三区| av激情成人网| 日韩中文字幕免费看| 国产区精品在线| 亚洲综合色视频| 国产激情视频网站| 天堂av在线一区| 亚洲欧美国产精品桃花| 欧美高清hd| 国内精品视频一区| 久久天堂电影| 8v天堂国产在线一区二区| 青娱乐91视频| xf在线a精品一区二区视频网站| 亚洲中文字幕久久精品无码喷水| 日本a口亚洲| 99re视频| 欧美一区久久久| 精品国产网站地址| 天天综合天天综合| 欧美日韩视频在线第一区| 免费在线观看黄色小视频| 成人精品高清在线| 少妇性l交大片| 午夜精品久久| 久久久99国产精品免费| 粉嫩av一区二区三区四区五区| 九九精品视频在线观看| 伦理片一区二区三区| 777久久久精品| 特级毛片www| 亚洲天堂免费看| 魔女鞋交玉足榨精调教| 国产精品小仙女| aⅴ在线免费观看| 你懂的视频一区二区| 国产在线视频欧美一区二区三区| 欧美综合影院| 日本久久亚洲电影| 性欧美videos高清hd4k| 亚洲视频axxx| 日韩中文字幕免费在线观看| 欧美色倩网站大全免费| 日韩欧美亚洲一区二区三区| 亚洲欧洲一区二区三区| 国产成人av一区二区三区不卡| 国产成人亚洲精品青草天美| 毛片毛片毛片毛片毛片毛片毛片毛片毛片| 欧美 日韩 国产一区二区在线视频| 久久综合久久久| 日韩三级不卡| 成人免费视频网址| free欧美| 45www国产精品网站| 日韩三级电影视频| 久久久精品国产网站| 国产资源在线播放| 亚洲精品按摩视频| www.xxx国产| 在线播放亚洲一区| 在线免费av网| 色综合久久久久久久久| 国产精品成人aaaa在线| 一区二区三区四区高清精品免费观看 | 国产精品第一页第二页第三页 | 亚洲免费在线观看视频| 国产精品一区二区亚洲| 久久久精品免费免费| 一区二区免费在线观看视频| 国产.欧美.日韩| 三日本三级少妇三级99| 久草在线在线精品观看| 午夜精品在线免费观看| 久久精品日产第一区二区| 国产毛片视频网站| 亚洲激情婷婷| 少妇高潮喷水在线观看| 亚洲精品专区| 国产乱子伦农村叉叉叉| 亚洲激情午夜| 浮妇高潮喷白浆视频| 最新亚洲激情| 国产在线青青草| 久久狠狠一本精品综合网| 免费在线观看日韩视频| 久久亚洲色图| 亚洲一区二区三区四区五区xx| 奇米色一区二区| 777一区二区| 国产一区二区三区高清播放| 国产黄色一区二区三区| 福利电影一区二区三区| 88av在线播放| 久久精品一区蜜桃臀影院| caopeng视频| 成人欧美一区二区三区小说| 日韩成人短视频| 亚洲国产一区二区三区| 偷偷操不一样的久久| 色女孩综合影院| 中文字幕你懂的| 日韩免费看网站| 天堂在线资源网| 亚洲欧美国产精品| 欧美性天天影视| 九九热r在线视频精品| 末成年女av片一区二区下载| 日韩av手机在线看| 亚洲三级在线| 国产欧美日韩一区二区三区| 免费观看久久av| 亚洲三区视频| 欧美精选在线| 日日碰狠狠添天天爽超碰97| 首页国产欧美日韩丝袜| 亚洲高清在线不卡| 成人网在线免费视频| 精品夜夜澡人妻无码av| 国产精品免费视频观看| 麻豆精品一区二区三区视频| 亚洲专区一二三| 久久精品99北条麻妃| 欧美猛男超大videosgay| 91麻豆国产视频| 亚洲第一色中文字幕| 青青操视频在线| 亚洲美女av网站| 亚洲无线看天堂av| 91国产精品91| 国产免费区一区二区三视频免费 | 久久成人免费视频| 亚洲日本天堂| 成人国产精品一区二区| 国产精品第一| 久久精品国产精品青草色艺| 成人激情诱惑| www黄色日本| 久久se这里有精品| 国产乱了高清露脸对白| 亚洲欧美另类小说| 国产香蕉视频在线| 色婷婷一区二区三区四区| 国产情侣激情自拍| 亚洲色图第一页| 草草在线视频| 成人网在线视频| 人人精品亚洲| 91.com在线| 久久精品国产精品亚洲红杏| 国产视频精品视频| 亚洲视频1区2区| www.色国产| 日韩精品在线观看一区| av软件在线观看| 国产精品久久久久久网站| 青草久久视频| 亚洲成人动漫在线| 久久三级视频| 国产人成视频在线观看| 国产精品二三区| 中文字幕在线播| 精品国产乱码久久久久久1区2区| 秋霞影院午夜丰满少妇在线视频| 97在线免费视频| 精品一区二区三区免费看| 亚洲综合五月天| 久久国产欧美| 波多野吉衣中文字幕| 午夜精品福利久久久| 国产chinasex对白videos麻豆| 日韩专区在线观看| 成人啊v在线| 日本婷婷久久久久久久久一区二区| 最新亚洲一区| 韩国av中国字幕| 亚洲精品国产无天堂网2021| 91激情在线观看| 中文字幕av一区中文字幕天堂 | aaaaaaaa毛片| 中文字幕高清一区| 中文字幕av无码一区二区三区| 国产偷国产偷亚洲清高网站| 午夜在线激情影院| 操人视频欧美| 欧美a级在线| 深夜视频在线观看| 一区二区成人在线视频| 国产jzjzjz丝袜老师水多| 久久91精品国产91久久久| 亚洲精品v亚洲精品v日韩精品| 欧美美女黄色网| 国产成人精品免费看| 国产在线观看你懂的| 亚洲成人免费网站| 91超碰在线免费| 欧美激情视频一区二区三区| 亚洲综合精品四区| 精品视频站长推荐| 精品毛片三在线观看| 日韩一级免费毛片| 午夜精品一区二区三区在线播放| 盗摄系列偷拍视频精品tp| 青草青青在线视频| 2欧美一区二区三区在线观看视频 337p粉嫩大胆噜噜噜噜噜91av | 蜜臀久久99精品久久久久久宅男| 成人在线视频www| 老司机午夜免费福利视频| www.日本不卡| 国产成人精品一区二三区| 中文字幕亚洲无线码在线一区| 欧美性片在线观看| 永久免费精品视频网站| 国产成+人+日韩+欧美+亚洲| 久久精品国产亚洲av无码娇色 | 国产精品一区二区三区四区色| 国产区精品视频| 欧美欧美天天天天操| 中文字幕人妻一区二区| 欧美主播一区二区三区| 香蕉视频在线免费看| 国产精品久久久久av福利动漫| 99国产成+人+综合+亚洲欧美| 三区四区在线观看| 欧美人狂配大交3d怪物一区 | 91麻豆国产自产在线观看| 中文字幕在线观看精品| 欧美成人精品在线视频| 九九综合在线| 香蕉视频999| 懂色av影视一区二区三区| 91精品专区| 国产亚洲情侣一区二区无| 开心九九激情九九欧美日韩精美视频电影 | 国产成人日日夜夜| а中文在线天堂|