0
我用Python寫了一個程序爲雙向鏈表理解algorithm.However只有功能的某些部分是working.This後低於錯誤執行雙向鏈表的
class Node(object):
def __init__(self,d):
self.next_node = None
self.prev_node = None
self.data = d
class DoublyLinkedList(object):
def __init__(self):
self.head = None
self.tail = None
self.size = 0
def add(self,d):
new_node = Node(d)
if self.tail:
self.tail.next_node = new_node
new_node.next_node = None
new_node.prev_node = self.tail
else:
self.head = new_node
self.tail = new_node
new_node.prev_node = None
self.size+=1
def addBeg(self,d):
new_node = Node(d)
current_node = self.head
current_node.prev_node = new_node
new_node.prev_node = None
new_node.next_node = current_node
self.head = new_node
self.size+=1
def add_at(self,d,index):
new_node = Node(d)
previous_node = None
current_node = self.head
i = 0
while i<index and current_node:
previous_node = current_node
current_node = current_node.next_node
i+=1
#once it reaches the desired index
if i==index:
previous_node.next_node = new_node
new_node.prev_node = previous_node
new_node.next_node = current_node
current_node.prev_node = new_node
self.size+=1
return True
else:
return False #list ain't too long
def remove(self,d):
previous_node = None
current_node = self.head
while current_node:
if current_node.data == d:
if previous_node: #the node is somewhere in between
previous_node.next_node = current_node.next_node
current_node.next_node.prev_node = previous_node
else:
#it is the first node
self.head = current_node.next_node
current_node.next_node.prev_node = None
self.size -= 1
return True
previous_node = current_node
current_node = current_node.next_node
return False
def search(self,d):
current_node = self.head
while current_node:
if current_node.data == d:
return True
current_node = current_node.next_node
return False
#traverse through the linked list and store the elements in a list
def to_list(self):
lis = []
current_node = self.head
while current_node:
lis.append(current_node.data)
current_node = current_node.next_node
return lis
dll = DoublyLinkedList()
當我嘗試我的代碼插入使用附加功能的多個元素,它的行爲strange.For例如,如果我嘗試添加三個要素,它只顯示第一個和最後
ll.add(40)
ll.add(50)
ll.add(60)
print(ll.to_list())
我得到的輸出爲[40,60]
第二個問題是,如果我刪除寄託都else和保持一個元素
#removed all other elements
ll.add(70)
我得到「沒有屬性」 error.What是怎麼回事?
非常感謝!現在我的代碼工作正常! –