1. 큐란?
가장 먼저 들어간 자료가 가장 먼저 나오는 자료구조(FIFO)
(1) 큐의 연산
- enqueue(e) : 새로운 요소 e를 큐의 맨 뒤에 추가
- depueue( ) : 큐의 맨 앞에 있는 요소를 꺼내서 반환
- isEmpty( ) : 큐가 비어 있으면 True를, 아니면 False를 반환
- isFull( ) : 큐가 가득 차 잇으면 True를, 아니면 False를 반환
- peek( ) : 큐의 맨 앞에 있는 요소를 삭제하지 않고 반환
- size( ) : 큐에 들어 있는 전체 요소의 수를 반환
2. 배열로 구현하는 큐
- array[ ] : 큐 요소들을 저장할 배열
- capacity : 큐에 저장할 수 있는 요소의 최대 개수
- rear : 맨 마지막(후단) 요소의 위치(인덱스)
- front : 첫 번째(전단) 요소 바로 이전의 위치(인덱스)
선형 큐의 문제점 : 새로운 요소를 삽입할 수 없을 때 큐의 요소들을 모두 최대한 앞으로 옮겨 후단에 공간을 확보한 다음 삽입해야 함-> 문제점 해결 => 원형 큐
원형 큐 : front와 rear을 원형으로 회전시키는 개념
- 전단 회전 : front ← (front + 1) %capacity
- 후단 회전 : rear ← (rear + 1) %capacity
원혀 큐: 클래스 정의와 생성자
class ArrayQueue :
def __int__(self, capacity = 10):
self.capacity = capacity
self.array = [None] * capacity
self.front = 0
self.rear = 0
원형 큐: 공백 상태와 포화 상태 검사
def isEmpty(self) :
return self.front == self.rear
def isFull(self):
return self.front == (self.rear+1)%self.capacity
테스트 프로그램
import random
q = ArrayQueue(8)
q.display("초기상태")
while not q. isFull():
q.enqueue(random.randint(0,100)
q.display("포화상태")
print("삭제순서: ", end='')
while not q.isEmpty():
print(q.dequeue(), end = ' ')
print()
링 버퍼 : 최근의 자료를 유지 하는 용도로 사용. 가장 오래된 데이터를 삭제해서 큐를 계속 포화 상태로 유지.
q = ArrayQueue(8)
q.display("초기상태")
for i in range(6)
q.enqueue2(i)
q.display("삽입 0-5")
q.enqueue2(6); q.enqueue2(7)
q.display("삽입 6,7")
q.enqueue2(8); q.enqueue2(9)
q.display("삽입 8,9")
q.dequeue(); q.dequeue()
q.display("삭제 x2")
3. 덱이란?
덱: 전단과 후단에서 모두 삽입과 삭제가 가능한 큐
덱의 연산
- addFront(e) : 새로운 요소 e를 전단에 추가
- addRear(e) : 새로운 요소 e를 후단에 추가
- deleteFront( ) : 덱의 전단 요소를 꺼내서 반환
- deleteRear( ) : 덱의 후단 요소를 꺼내서 반환
- getFront( ) : 덱의 전단 요소를 삭제하지 않고 반환
- getRear( ) : 덱의 후단 요소를 삭제하지 않고 반환
- isEmpty( ) : 덱이 비어 있으면 True를 아니면 False를 반환
- isFull( ) : 덱이 가득 차 있으면 True를 아니면 False를 반환
- size( ) : 덱이 들어 있는 전체 요소의 수를 반환
원형 덱은 반시계 방향 회전
원형 덱: 큐를 상속한 클래스 정의
class CircularDeque(ArrayQueue):
def __int__(self, capacity=10) :
super().__int__(capacity)
'CS공부🖥️ > 자료구조' 카테고리의 다른 글
자료구조와 알고리즘 with 파이썬 chapter6. 정렬 (0) | 2025.02.02 |
---|---|
자료구조와 알고리즘 with 파이썬 chapter5. 알고리즘 개요 (1) | 2025.01.24 |
자료구조와 알고리즘 with 파이썬 chapter4.트리 (1) | 2025.01.23 |
자료구조와 알고리즘 with 파이썬 chapter3 (0) | 2025.01.09 |
자료구조와 알고리즘with 파이썬 chapter1 (0) | 2025.01.02 |