기록방

큐 (Queue) 본문

CS/자료구조

큐 (Queue)

Soom_1n 2021. 5. 4. 15:30
: 데이터를 일시적으로 저장하기 위해 사용하는 자료구조. 선입선출(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