classNode: # node는 value와 자기 자신의 바로 아래 있는 Node를 가리키는 pointer로 구성된다 def__init__(self, value=None, pointer=None): self.value = value self.pointer = pointer classStack: def__init__(self): self.head = None # Node를 만들고, head에 추가한 다음 Node의 pointer에 추가하기 전 head에 있던 Node를 연결시켜 준다 defpush(self, value): self.head = Node(value, self.head) defpop(self): if self.head: value = self.head.value self.head = self.head.pointer return value else: print("Stack is empty!") # 연결되어 있는 Node를 탐색하면서 pointer가 None인 마지막 Node까지 출력 defprintStack(self): top = self.head if top isNone: print("Stack is empty!") while top: print(top.value, end=' ') top = top.pointer
큐
큐는 항목이 들어온 순서대로 접근 가능하다. 즉, FIFO(선입선출) 구조이다.
큐의 동작
큐의 동작은 크게 enqueue와 dequeue 가 있다. 각각 맨 뒤쪽에 데이터 삽입, 맨 앞의 데이터 추출 을 수행하는 동작이다.
classQueue: def__init__(self): self.items = [] # 데이터 추가, 리스트의 맨 앞쪽에 추가한다 defenqueue(self, value): self.items.insert(0, value) # 데이터 추출, 처음에 들어온 데이터부터 추출 defdequeue(self): if self.items: value = self.items[-1] del(self.items[-1]) return value else: print("queue is empty!!") defsize(self): return len(self.items) def__repr__(self): return repr(self.items)