연결리스트를 이용하여 큐를 구현하는 예제이다.
Node class와 Queue class를 이용하여 queue를 구현하였다.
class Node:
def __init__(self, data):
self.data = data
self.next = None
class Queue:
def __init__(self):
self.front = None
self.rear = None
def is_empty(self):
return self.front is None
def enqueue(self, data):
new_node = Node(data)
if self.is_empty():
self.front = self.rear = new_node
else:
self.rear.next = new_node
self.rear = new_node
def dequeue(self):
if self.is_empty():
raise ValueError("Queue is empty")
data = self.front.data
self.front = self.front.next
if self.front is None:
self.rear = None
return data
def peek(self):
if self.is_empty():
raise ValueError("Queue is empty")
return self.front.data
def display(self):
current = self.front
while current:
print(current.data, end=" ")
current = current.next
print()
# 예제 사용
queue = Queue()
queue.enqueue(1)
queue.enqueue(2)
queue.enqueue(3)
print("Queue:")
queue.display() # 출력: 1 2 3
print("Dequeue:", queue.dequeue()) # 출력: Dequeue: 1
print("Queue:")
queue.display() # 출력: 2 3
print("Peek:", queue.peek()) # 출력: Peek: 2
반응형
'Computer Science' 카테고리의 다른 글
[자료구조] 이진 트리의 순회(중위순회/전위순회/후위순회) (0) | 2024.02.08 |
---|---|
[자료구조] 덱(Deque) 컨셉, 배열/연결리스트 구현 매커니즘 (0) | 2024.02.07 |
[자료구조] 큐 구현: 배열 이용방법(feat. enqueue, dequeue, peek 알고리즘), queue가 가지는 한계점 (0) | 2024.02.05 |
[자료구조] 스택 구현 : 연결리스트 이용 방법 (0) | 2024.02.04 |
[자료구조] 스택 구현 : 배열 이용 방법 (1) | 2024.02.03 |