Queue 클래스로 구현하기

enqueue와 dequeue

  • Queue는 입구가 rear이고 출구가 front이다.
  • 입구쪽에서 데이터를 추가하는 것을 enqueue라고 한다.
  • 출구쪽에서 데이터를 제거하는 것을 dequeue라고 한다.

노드 삽입할 때,

  • 빈 Queue이면 front, rear가 모두 첫 노드를 가리킨다.
  • 빈 Queue가 아니면, rear의 next가 새 노드를 가리키고 rear를 새 노드로 옮긴다.

노드 꺼낼 때,

  • 빈 Queue가 되면, front, rear는 모두 None을 가리킨다.
  • Queue에 노드가 남아있으면 front를 front의 next로 옮긴다.

코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
class Node:
def __init__(self,data):
self.data = data
self.next = None

class Queue:
def __init__(self):
self.front = None
self.rear = None

def enqueue(self,data):
node = Node(data)
if self.front == None:
self.front = node
self.rear = node
else:
self.rear.next = node
self.rear = node

def dequeue(self,data):
if self.front == None:
return None
node = self.front
if self.front == self.rear:
self.front = None
self.rear = None
else:
self.front = self.front.next
return node.data

def is_empty(self):
return self.front == None