본문 바로가기
cs/자료구조

[Queue]16. Array-base Queue 구현

by 장인이 2021. 2. 20.

목차

1. class Queue_array

2. 테스트

 

1. class Queue_array

class Queue_array:
    def __init__(self):
        self.queue = [] # queue 저장할 리스트
        self.f = 0 # queue의 front idx
        self.r = -1 # queue의 rear idx
    
    def size(self)-> int: # queue의 크기 반환하는 함수
        return len(self.queue)

    def empty(self)-> bool: # queue가 비어있는지 여부를 반환하는 함수
        return len(self.queue)==0
    
    def front(self)-> object: # front의 element를 반환하는 함수
        if self.empty(): # queue가 비었다면
            print('queue is empty')
        else:
            return self.queue[self.f]
    
    def rear(self)-> object: # rear의 element를 반환하는 함수
        if self.empty(): # queue가 비었다면
            print('queue is empty')
        else:
            return self.queue[self.r]
    
    def enqueue(self, data: object): # rear에 element 추가
        self.queue.append(data)
        self.r += 1
    
    def dequeue(self): # front의 element 제거
        if self.empty(): # queue가 비었다면
            print('queue is empty')
        else:
            self.queue.pop(0)
            self.r -= 1

 

2. 테스트

if __name__ == "__main__":
    que = Queue_array()
    print('made Queue_array()')
    print(f'que.empty(): {que.empty()}')
    print(f'que.size(): {que.size()}')
    print(f'que.front(): {que.front()}')
    print(f'que.rear(): {que.rear()}')
    print()
    
    que.enqueue(1)
    que.enqueue(2)
    que.enqueue(3)
    print('enqueue 1, 2, 3')
    print(f'que.empty(): {que.empty()}')
    print(f'que.size(): {que.size()}')
    print(f'que.front(): {que.front()}')
    print(f'que.rear(): {que.rear()}')
    print()
    
    que.dequeue()
    print('dequeue')
    print(f'que.empty(): {que.empty()}')
    print(f'que.size(): {que.size()}')
    print(f'que.front(): {que.front()}')
    print(f'que.rear(): {que.rear()}')
    print()

 

예상 출력:

'''
made Queue_array()
que.empty(): True
que.size(): 0
queue is empty
que.front(): None
queue is empty
que.rear(): None

enqueue 1, 2, 3
que.empty(): False
que.size(): 3
que.front(): 1
que.rear(): 3

dequeue
que.empty(): False
que.size(): 2
que.front(): 2
que.rear(): 3

'''

 

전체 코드는 github에 올려두었습니다.

github.com/imgzon3/algorithm/blob/main/Queue/queue_array.py

 

imgzon3/algorithm

Contribute to imgzon3/algorithm development by creating an account on GitHub.

github.com

'cs > 자료구조' 카테고리의 다른 글

[Vector/List]18. Position ADT, List ADT  (0) 2021.02.21
[Vector/List]17. Vector ADT  (0) 2021.02.21
[Queue]15. Queue 종류  (0) 2021.02.20
[Queue]14. Queue(큐)  (0) 2021.02.20
[Stacks]13. 후위 표기식 연산 구현 (Stack 응용)  (0) 2021.02.20

댓글