我必須在堆棧中編寫一個鏈表,這意味着我可以刪除頂部的數字並從堆棧的頂端推送一個數字。不幸的是我的pop()方法FUNC不工作,我希望你能幫助我:從鏈表中刪除一個節點(堆棧)
# ---------------init--------------
class node:
def __init__(self):
self.data = None # contains the data
self.next = None # contains the reference to the next node
class linked_list:
def __init__(self):
self.cur_node = None
# ---------------is_empty--------------
def is_empty(self):
if self.cur_node == None:
print ("list is empty")
else:
print ("List = ")
ll.list_print()
# ---------------is_full--------------
# ---------------push--------------
def push(self, data):
new_node = node() # create a new node
new_node.data = data
new_node.next = self.cur_node # link the new node to the 'previous' node.
self.cur_node = new_node # set the current node to the new one.
# ---------------pop--------------
def pop(self):
print(node)
node = self.cur_node
while node:
if node.next == None:
node = None
break
else:
node=node.next
# ---------------print--------------
def list_print(self):
...
ll = linked_list()
ll.is_empty()
ll.push(1)
ll.push(3)
ll.push(2)
ll.is_empty()
ll.pop()
ll.list_print()
流行之前,電流輸出()是
2
3
1
pop()方法之後,它應該是
3
1
我不知道python,但顯然在你的'pop'中,你不會改變'self.cur_node',但只需按照堆棧的底部。剛剛使用'self.cur_node = self.cur_node.next'怎麼樣? – Codor 2015-01-09 20:12:36
@Codor我的教授給了我一個寫函數is_full()的練習。在我看來,不可能找到一個完整的鏈表,因爲你總是可以創建一個「新節點」。我猜,這是他的錯......你覺得呢? – WirJun 2015-01-09 20:20:46
@Codor沒錯,就這麼簡單。 – augurar 2015-01-09 21:12:06