일단 간단하게 짜보자
class Stack(object):
__slots__ = {"next", "data"}
def __init__(self):
self.data = None
self.next = None
def push(self, data):
stack = Stack()
stack.data = data
stack.next = self.next
self.next = stack
return
def pop(self):
data = self.next.data
self.next = self.next.next
return data
def top(self):
return self.next.data
def empty(self):
return self.next == None
여기서 처음에 data, next는 무조건 None으로 해주지 않아도 되지만 이렇게 하는게 관리가 쉽다(이렇게 안해주면 인덱스꼬여서 막장됨)
self를 직접 변경해주면 인자로 받은 self != 변경된 self라고 인터프리터가 이해하기 때문에 next를 직접 변경해주어야 한다.
이런식으로 짜주면 됨 ㅇㅅㅇ
뭔가 메모리 누수같은거 날것 같지만 파이썬을 만만하게 보면 안됨 저거 다 해제됨
파이썬 gc는 참조카운트 형식임 참조횠수가 0이되면 수거해 간단 소리
직접 self.next를 del하게되면 next뒤에있는 모든것이 사라지기도 함
오.. 정말로 고마워 ㅠㅠ..
비밀 댓글입니다.