본문 바로가기
Programming/자료구조

[자료구조] 큐(Queue)

by devpine 2019. 2. 15.
반응형

큐(Queue)

한쪽으로 넣고 다른 한 쪽으로 나오는 FIFO(First In First Out), 즉 선입선출 구조의 자료구조

Ex)터널, 선착순 예매


큐의 정의, 연산

Enqueue(item): item을 큐의 마지막에 저장한다.

Dequeue(): 큐의 가장 앞선 데이터를 삭제한다.


배열로 큐 구현

package Queue;

public class ArrayQueue {
private char[] array;
private int front;
private int rear;
private int size;

public ArrayQueue(int size){ //큐 배열 생성
this.front = 0;
this.rear = -1;
this.size = size;
this.array = new char[size];
}

public boolean isEmpty(){ //큐가 비어있는지 확인
return (front == rear+1);
}

public boolean isFull(){ //큐가 가득 차있는지 확인
return (front == size-1);
}

public void enqueue(char item){ //데이터 삽입
if(isFull())
throw new ArrayIndexOutOfBoundsException();
array[++rear] =item;
}

public char peek(){ //front 데이터 조회
if(isEmpty())
throw new ArrayIndexOutOfBoundsException();
return array[front];
}

public char dequeue(){ //front 데이터 제거
char item = peek();
front++;
return item;
}
}


연결리스트로 큐 구현


//마저 하기



데크(Deque)란

양방향 큐, 삽입과 삭제가 양쪽 방향에서 이루어진다.


활용예시

  • 우선순위가 같은 작업 예약(인쇄 대기열)
  • 선입선출이 필요한 대기열(티켓 카운터)
  • 콜센터 고객 대기시간


반응형

'Programming > 자료구조' 카테고리의 다른 글

ArrayList  (0) 2019.04.10
List의 개념  (0) 2019.04.10
Array (배열) - Java API  (0) 2019.04.10
Data Structure란  (0) 2019.04.10
[자료구조] 스택(Stack)  (0) 2019.02.15

댓글