【发布时间】:2017-05-23 04:43:08
【问题描述】:
我正在尝试使用仅基于节点类的链表来实现堆栈。我的班级的 pop 方法出现了一些问题,似乎没有表现出可变性。当我使用 pop 类方法时,它会正确返回堆栈的顶部,但无法更新堆栈。
x=stack_linked(1)
x=x.insert(2)
x=x.insert(3)
x.print() # This is correct and prints 3,2,1
print(x.pop()) # This is correct and prints 3, but doesn't actually modify my list
x.print() # This prints 3,2,1
为什么 self 不可变?另外,如何在不完全炸毁它或为其创建包装器的情况下修改我的类?这是我的课。
class stack_linked(object):
def __init__(self,data):
self.data=data
self.next=None
def insert(self,front):
front=stack_linked(front)
front.next=self
return front
def peek(self):
if self==None:
return None
else
return self.data
def pop(self):
front=self
self=self.next # some sort of issue here
return front
def print(self):
x=self
if x==None:
print("Empty")
else:
print(x.data)
while x.next !=None:
x=x.next
print(x.data)
【问题讨论】:
-
在实例方法中分配给
self不会导致整个实例被替换。 -
那么,我该如何重做 pop 方法呢?
-
这也是可变性的问题吗?还是不相关?
-
pop应该返回数据,而不是节点..
标签: python linked-list stack