큐 또한 스택과 마찬가지로 자료를 입출력하는 자료구조이기 때문에 링크드리스트를 활용한 방식으로 구현했다.
class Node:
def __init__(self, data):
self.data = data
self.next = None
스택 구현에 사용할 노드이다.
노드는 데이터와 다음 노드를 가리키는 포인터로 구성되어 있다.
def enqueue(self, value):
new_node = Node(value)
if self.is_empty():
self.head = new_node
self.tail = new_node
return
self.head.next = new_node
self.tail = new_node
큐에 자료를 삽입하는 메서드이다.
구현 방식은
def dequeue(self):
if self.is_empty():
return 'Queue is empty'
delete_head = self.head
self.head = self.head.next
return delete_head.data
큐의 head 노드의 데이터를 추출하는 메서드이다.
큐가 비어있는 경우 리턴할 데이터가 없기 때문에 큐가 비어있다는 정보를 리턴하도록 설정했다.
링크드리스트의 특징을 활용해 head를 변경하여 기존 head 노드의 데이터를 링크드리스트에서 제거하고 리턴하도록 구현했다.
def peek(self):
if self.is_empty():
return "Queue is empty"
return self.head.data
큐의 head노드의 데이터를 확인하는 메서드이다.
dequeue와 마찬가지로 비어있는 경우 값을 확인할 수 없기 때문에 큐가 비어있다는 정보를 리턴하도록 설정했다.