Queue

정승균·2020년 12월 2일
0

파이썬 자료구조

목록 보기
4/7
post-thumbnail

1. Queue의 주요 메소드

  • enqueue(item) : item을 queue의 한쪽 끝에 삽입
  • dequeue() : 다른 끝에서 item 꺼내기
  • peek() : 맨 앞의 원소 참조

2. 이중 연결 리스트를 이용해 구현한 Queue

from doubly_linked_list import *

class Queue:
     
    def __init__(self):
        self.data = DoublyLinkedList()
    
    def __repr__(self):
        return 'Queue:' + str(self.data)
    
    def __len__(self):
        return len(self.data)

    def isEmpty(self):
        return len(self) == 0

    def enqueue(self, item):
        node = Node(item)  
        self.data.insertAt(len(self), node)

    def dequeue(self):
        if self.isEmpty():
            raise IndexError('dequeue from empty queue')
        return self.data.popAt(0)

    def peek(self):
        if self.isEmpty():
            raise IndexError('queue is empty')
        return self.data[0]

3. 테스트

print('# 빈 큐 생성')
q = LinkedListQueue()
print('생성한 큐:', q)

print('\n# 1, 2, 3 을 차례대로 삽입')
for item in [1,2,3]:
    q.enqueue(item)
    print('Queue:', q)

print('\n# dequeue로 꺼내기')
print('꺼낸 원소:', q.dequeue())
print('Queue:', q)

print('\n# 앞 원소 peek')
print('peek한 원소:', q.peek())
# 빈 큐 생성
생성한 큐: []

# 1, 2, 3 을 차례대로 삽입
Queue: [1]
Queue: [1, 2]
Queue: [1, 2, 3]

# dequeue로 꺼내기
꺼낸 원소: 1
Queue: [2, 3]

# 앞 원소 peek
peek한 원소: 2




소스코드: queue.py

0개의 댓글

관련 채용 정보