기록방
큐 (Queue) 본문
큐 : 데이터를 일시적으로 저장하기 위해 사용하는 자료구조. 선입선출(FIFO, First In First Out)
[ 기능 ]
- enque : 큐에 데이터를 넣음
- deque : 큐의 맨 앞 데이터를 꺼냄
- peek(front) : 큐의 맨 앞 데이터를 알림(엿봄)
- indexOf : 큐에 특정 값이 있는지, 있다면 어느 위치에 있는지 알림
- size : 큐의 데이터 수 확인
- clear : 큐 비우기
- isEmpty : 큐가 비었는지 확인
- isFull : 큐가 가득 찼는지 확인
- dump : 큐의 모든 데이터 확인
[ python ]
class Queue:
def __init__(self):
print('\n-- 큐 프로그램 --')
self.st = []
self.max = 1000
def enque(self, num):
if len(self.st) <= self.max:
self.st.append(num)
print('enque :', num)
else:
print('오류 : 큐가 가득 찼습니다.')
def deque(self):
if self.st:
temp = self.st.pop(0)
print('deque :',temp)
else:
print('오류 : 큐가 비었습니다.')
def peek(self):
if self.st:
print('front :',self.st[0])
else:
print('오류 : 큐가 비었습니다.')
def indexOf(self, num):
if num in self.st:
print('\'{0}\'의 위치는 {1}번 인덱스입니다.'.format(num,self.st.index(num)))
else:
print('큐 안에 \'{0}\' 없습니다.'.format(num))
def clear(self):
self.st = []
print('큐가 초기화 되었습니다.')
def size(self):
print('큐의 크기는 {0} 입니다.'.format(len(self.st)))
def isEmpty(self):
if self.st:
print('큐가 비어있지 않습니다.')
else:
print('큐가 비어있습니다.')
def isFull(self):
if len(self.st) < self.max:
print('큐가 가득차지 않았습니다.')
else:
print('큐가 가득 찼습니다.')
def dump(self):
print('queue :',self.st)
st = Queue()
op = 1
num = 0
while op != 0:
print('\n[menu]')
print('1)enque 2)deque 3)peek 4)indexOf 5)clear 6)size 7)isEmpty 8)isFull 9)dump 0)exit')
print('op : ',end='')
op = int(input())
print('')
if op == 1:
num = int(input('num : '))
st.enque(num)
elif op == 2:
st.deque()
elif op == 3:
st.peek()
elif op == 4:
num = int(input('num : '))
st.indexOf(num)
elif op == 5:
st.clear()
elif op == 6:
st.size()
elif op == 7:
st.isEmpty()
elif op == 8:
st.isFull()
elif op == 9:
st.dump()
elif op != 0:
print('잘못 입력하셨습니다.')
print('종료합니다.')
728x90
'CS > 자료구조' 카테고리의 다른 글
트라이(Trie) 자료구조 (0) | 2024.05.19 |
---|---|
데큐 (Deque) (0) | 2021.05.04 |
스택 (Stack) (0) | 2021.05.04 |