Queue의 자료구조
Queue는 다음과 같은 성질을 갖는 자료형구조 이다.
1. 데이터를 집어넣을 수 있는 선형 자료형이다.
2.먼저 집어넣은 데이터가 먼저 나온다.FIFO(First In First Out)
3.데이터를 집어넣는 enqueue, 데이터를 추출하는 dequeue 등의 작업이 있다
Queue 는 흔히 말하는 선입 선출을 얘기하는 것이다. 프로그래밍을 도전하기전 영화관 아르바이트를 했었는데 거기서 선입 선출에 대해 정말 지겹도록 들었었다.. 먼저 들어온것이 먼저 나가고 후에 들어온게 가장 늦게 나가는 것. 그게 선입선출이다.
말을 잘 못해 이해가 안갈수도 있다.. 그림을 통해 알아보자.
queue의 property
- front: 가장 먼저 들어간 맨 앞의 값
- rear: 새로운 데이터가 들어갈 인덱스
- storage: queue가 가지고 있는 데이터들의 모음
Queue의 Methode
Method | 실행 | 결과 값 |
enqueue() | 값의 큐의 rear에 추가한다 | - |
dequeue() | 값을 큐의 front에서 제거한다. | top의 값 |
peek() | front에 위치하는 값을 확인한다 | top의 값 |
size() | 큐의 길이를 확인한다 | Queue의 길이 |
isEmpty() | 큐가 비어있는지 확인한다 | boolean |
psedoCode
isEmpty
- Queue가 비어있는지 확인
- 비어있으면 flase
- 값이 있으면 true
if(arr.size > 0){
return true;}
else{
reuturn false}
size()
- 큐가 비어있지 않다면
- length로 길이 리턴
size()
return arr.length;
enqueue()
- Queue의 크기가 최대 크기보다 크거나 같은지 확인
- 만약 크다면 Queue Overflow 반환
- 작다면 rear 인덱스에 추가
- rear 값을 1 증가
function push (){
arr.push()
}
dequeue()
- Queue가 비어있는지 확인한다.
- queue가 비어있다면 Queue underflow 반환
- 값이 들어있다면 변수 front에 처음 들어간 값 제거
function shipt(){
if(arr.length > 0){
arr.shipt
}
}
peak()
- 큐가 공백인지 확인
- 비어있다면 false
- 공백이 아니라면 front출력
function peak (){
if(isEmpty){
return arr[0]
}else{
return undefind
}
}
}