목차
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에 올려두었습니다.
'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 |
댓글