python数据结构与算法:双向链表
生活随笔
收集整理的這篇文章主要介紹了
python数据结构与算法:双向链表
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
雙向鏈表:
###################### P4.13-P4. 雙向鏈表 ###########################
# import singlelinkListclass Node(object):def __init__(self,item):self.elem = itemself.next = Noneself.prev = None# class DoublelinkList(singlelinkList): #繼承
class DoublelinkList(object):def __init__(self, node = None):self.__head = nodedef is_empty(self):return self.__head is Nonedef travel(self):cur = self.__headwhile cur.next != None:print(cur.elem, end=" ")cur= cur.nextprint("")def length(self):"""length of list 遍歷 借助 Cursor 指針或者游標計數"""cur = self.__headcount = 0while cur != None:# cur.next = Nonecount+=1cur = cur.nextreturn countdef add(self, item):node = Node(item)node.next = self.__headself.__head = nodenode.next.prev = nodedef append(self, item):node = Node(item) # node 實例化if self.is_empty():self._head = nodeelse:cur = self.__headwhile cur.next != None:cur = cur.nextcur.next = nodenode.prev = curdef insert(self, pos, item):""":param pos 從0 開始 """if pos < 0:self.add(item)elif pos > (self.length() - 1):self.append(item)else:cur = self.__headcount =0while (count < pos):count += 1cur = cur.nextnode = Node(item)node.next = curnode.prev = cur.prevcur.prev = nodecur.prev.next = nodedef remove(self, item):cur = self.__headwhile cur != None:if cur.elem == item:if cur == self.__head:self.__head = cur.nextif cur.next:cur.next.prev = Noneelse:cur.prev.next = cur.nextif cur.next:cur.next.prev = cur.prevbreakelse:pre = curcur = cur.nextdef search(self, item):cur = self.__headwhile cur != None:if cur.elem == item:return Trueelse:cur = cur.nextreturn Falseif __name__ =="__main__":ll = DoublelinkList()print(ll.is_empty())print(ll.length())ll.append(1)print(ll.is_empty())print(ll.length())ll.append(2)# ll.add(8)ll.append(3)ll.append(4)ll.append(5)ll.append(6)ll.insert(-1, 9)ll.insert(3, 100)ll.insert(8, 1234)ll.travel()
### 9 8 1 3 119 1 3 1234ll.remove(1234)ll.travel()
?
總結
以上是生活随笔為你收集整理的python数据结构与算法:双向链表的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 是我玻璃心了吗?
- 下一篇: python数据结构与算法:栈