如何在python中创建通用堆栈?我在 python 中的堆栈实现:
class Node(object):
def __init__(self, d):
self.data = d
self.nextNode = None
class Stack(object):
def __init__(self):
self.top = None
def push(self, item):
newNode = Node(item)
newNode.nextNode = self.top
self.top = newNode
def pop(self):
if self.top == None:
return None
item = self.top.data
self.top = self.top.nextNode
return item
现在我正在放置类 Node 的对象,但是如何实现泛型 Stack 以便我可以放置任何东西。例如,如果我想创建新类型的节点
class NodeWithMin:
def __init__(self, value, minval):
self.data = value
self.minval = minval
并且能够基于这些类型的节点创建堆栈,所以它应该是这样的(当然它不起作用):
class StackWithMin(qs.Stack):
def push(self, val):
if self.peek() != None:
minval = min(self.peek().value, val)
else:
minval = val
qs.Stack.push(NodeWithMinV2(val, minval))
任何的想法?
编辑:它不起作用,因为我有下一个错误:
unbound method push() must be called with Stack instance as first argument (got NodeWithMinV2 instance instead)
我错过了self