04. Queue
2020. 2. 2. 07:36ㆍCSE/Data Structure
* 특징
: 데이터를 일시적으로 쌓아 놓은 자료구조
선입선출(FIFO, First In First Out)
* java로 간단하게 구현한 모습
public class Queue<T> {
private int front;
private int num;
private int rear;
private int max;
private T[] que;
public Queue(int n){
front = num = rear = 0;
max = n;
try{
que = (T[])(new Object[max]);
}catch(OutOfMemoryError e){
max = 0;
}
}
public T enque(T x) throws OverflowQueueException{
if(num>=max){
throw new OverflowQueueException();
}
que[rear] = x;
rear++;
num++;
if(rear==max){
rear = 0;
}
return x;
}
public T deque() throws EmptyQueueException{
if(num<=0){
throw new EmptyQueueException();
}
T x = que[front];
front ++;
num--;
if(front==max){
front = 0;
}
return x;
}
public T peek() throws EmptyQueueException{
if(num<=0){
throw new EmptyQueueException();
}
return que[front];
}
public int indexOf(T x){
for(int i = 0; i<num;i++){
int idx = (i+front)%max;
if(que[idx].equals(x)){
return idx;
}
}
return -1;
}
public void clear(){
front = rear= num = 0;
}
public int capacity(){
return max;
}
public int size(){
return num;
}
public boolean isEmpty(){
return num<=0;
}
public boolean isFull(){
return num>=max;
}
public void dump(){
if(num<=0){
System.out.println("큐가 비어있습니다");
}else{
for(int i = 0; i<num;i++){
int idx = (i+front)%max;
System.out.printf(que[idx] + " ");
}
System.out.println();
}
}
}
class EmptyQueueException extends RuntimeException{
public EmptyQueueException(){}
}
class OverflowQueueException extends RuntimeException{
OverflowQueueException(){}
}
'CSE > Data Structure' 카테고리의 다른 글
Hash Table, ArrayList (0) | 2021.07.19 |
---|---|
03. Stack (0) | 2020.01.21 |
02. 이진 검색(Binary Search) (0) | 2019.08.21 |
01. 선형 검색 (Linear Search) (0) | 2019.08.21 |