파이썬에서 제네릭 스택을 만드는 방법은 무엇입니까? 내 스택 파이썬에서 구현 : 클래스 노드의파이썬, 일반 함수
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
지금은 걸었습니다 개체하지만 어떻게 내가 거기에 아무것도 넣을 수 있도록 일반적인 스택을 구현합니다.
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))
: 나는, 노드
class NodeWithMin:
def __init__(self, value, minval):
self.data = value
self.minval = minval
의 새로운 유형을 생성하고 노드의 이러한 유형에 따라 스택을 만들 수 있어야합니다 그래서 예를 들어,이 같은 (물론이 작동하지 않습니다)를해야한다
어떤 아이디어가 있습니까?
편집 : 나는 다음 오류 때문에 작동하지 않았다
unbound method push() must be called with Stack instance as first argument (got NodeWithMinV2 instance instead)
내가
self
그것이 작동하지 않는다는 것이 무엇을 의미합니까? 당신이 제대로하고있는 것처럼 보입니다. – Joe
왜 파이썬'목록'을 사용하는 대신 자신의 스택을 굴리기를 원하십니까? 'list.append (element)'를 누르면 푸시되고,'element = list.pop()'가 팝업됩니다. –
아마도 @capoluca는 잘 알려진 데이터 구조를 통해 파이썬에서 제네릭 (또는 동급)을 수행하는 방법을 배우려고 노력하고 있을까요? – Joe