티스토리 뷰
728x90
반응형
Queue는 Array를 활용한 사용자 자료구조 중 하나입니다.
Queue의 원리는 First In First Out(FIFP)
가장 먼저 들어온 Element가 가장 먼저 나간다 입니다.
정수기의 종이컵 / 놀이공원 대기열을 생각하면 쉽습니다.
Queue 역시 자료구조이기 때문에, Element의 Add와 Delete가 존재합니다.
하지만 FIFP의 원칙 때문에 Delete는 Output에서만, Add는 Input 에서만 가능합니다.
이때 Delete부분을 보면, Output Pointer가 움직이면서 첫번째 위치는 더이상 Pointing하지 못하는 것을 알 수 있습니다.
때문에 선형 Queue의 경우 Queue가 채워진 후 삭제되면 Capacity가 같이 감소하는 단점이 있습니다.
Python으로 구현된 선형Queue입니다.
class queue:
def __init__(self, Max_size):
self.Max_size = Max_size
#Queue의 Input과 Output의 위치를 Pointing
self.input_pointer = 0
self.out_pointer = 0
#Queue를 운용할 Array
self.list = []
#Input Pointer의 위치를 고려하여
#가능한경우 Queue에 Element를 추가합니다.
def add(self, element):
if self.input_pointer>self.Max_size:
return print("queue is full")
else:
self.list= self.list + [element]
self.input_pointer = self.input_pointer+1
#Output Pointer의 위치를 고려하여
#가능한경우 Queue에 Element를 제거합니다.
def delete(self):
if self.input_pointer==self.out_pointer:
return print("queue is empty")
else:
del(self.list[0])
self.out_pointer = self.out_pointer+1
def is_full(self):
if self.input_pointer>self.Max_size:
return True
else:
return False
def is_empty(self):
if self.input_pointer==self.out_pointer:
return True
else:
return False
import random
data = [i for i in range(30)]
random.shuffle(data)
#Max Size가 20인 Queue 생성
test_que = queue(19)
for i in data:
test_que.add(i)
==> queue is full
#Queue가 가득 찬 상태의 Input Pointer의 위치
test_que.input_pointer
==> 20
for i in data:
test_que.delete()
==> queue is empty
test_que.is_empty()
==> True
728x90
반응형
'Python 자료구조' 카테고리의 다른 글
Binary Tree (0) | 2021.01.30 |
---|---|
Connect List 응용(원형, 이중) (0) | 2021.01.29 |
Connect List(연결리스트) (0) | 2021.01.28 |
Circular Queue (0) | 2021.01.27 |
Stack (0) | 2021.01.26 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 프로그래머스
- 동적계획법
- stack
- GDC
- 이분탐색
- heap
- 알고리즘
- prime number
- AVX
- 자료구조
- hash
- Sort알고리즘
- Search알고리즘
- 병렬처리
- 사칙연산
- 분할정복
- 완전탐색 알고리즘
- SIMD
- Python
- git
- C++
- Greedy알고리즘
- 컴퓨터그래픽스
- 코딩테스트
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
글 보관함