
本文共 4517 字,大约阅读时间需要 15 分钟。
Python ������������������
������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ Python ���������������������������������������
������������
���������������������������������������������
elem
������������������������������������pre
������������������������������������next
������������������������������������
class Node(object): def __init__(self, elem): self.elem = elem self.pre = None self.next = None
���������������
������������������������������������������������������������������������������������������������������������������
������������
������������������������������������������������������������������������������������������������������������������
class DoubleLinkedList(object): def __init__(self, node=None): self.__head = node
������������������
������������������������������������������
def length(self): cur = self.__head count = 0 while cur is not None: count += 1 cur = cur.next return count
������������
���������������������������
def is_empty(self): return self.__head is None
���������������
������������������������������������������
def addFirst(self, elem): node = Node(elem) if self.is_empty(): # ������������ self.__head = node else: node.next = self.__head node.next.pre = node self.__head = node
���������������
������������������������������������������
def addLast(self, elem): node = Node(elem) if self.is_empty(): self.__head = node else: cur = self.__head while cur.next is not None: cur = cur.next cur.next = node node.pre = cur
���������������������
���������������������������������������������������
def add(self, pos, elem): if pos == 0: self.addFirst(elem) elif pos > self.length() or pos < 0: raise ValueError('Add failed. Illegal index.') else: node = Node(elem) cur = self.__head pre = None for i in range(pos): pre = cur cur = cur.next pre.next = node node.pre = pre node.next = cur if cur: cur.pre = node
������������������
���������������������������������������
def remove(self, elem): if self.is_empty(): return cur = self.__head while cur is not None: if cur.elem == elem: if cur == self.__head: self.__head = cur.next if cur.next: cur.next.pre = None else: cur.pre.next = cur.next if cur.next: cur.next.pre = cur.pre break else: cur = cur.next
������������
���������������������������������������������������������������
def travel(self): cur = self.__head while cur is not None: print(cur.elem, end=' ') cur = cur.next
������������
������������������������������������������
def search(self, elem): cur = self.__head while cur is not None: if cur.elem == elem: return True else: cur = cur.next return False
������������
������������������������
# ���������������dq = DoubleLinkedList()# ������������������dq.addFirst(1)dq.addFirst(2)dq.addFirst(3)# ������������������print(dq.length()) # ���������3
������������������
# ������������dq.travel() # ���������1 2 3
������������������
cur = dq.__head.nextwhile cur is not None: print(cur.elem, end=' ') cur = cur.nextprint() # ���������2 3
������������������
- ��������������������� dq.addLast(4) dq.travel() # ���������1 2 3 4
- ��������������� dq.remove(2) dq.travel() # ���������1 3 4
- ��������������� if dq.search(2): print("������������") else: print("���������������")
- ��������������� if dq.is_empty(): print("������������") else: print("���������������")
������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������
发表评论
最新留言
关于作者
