데이터 구조 (2) - 대기 열
14540 단어 -- [데이터 구조]
1. 대열 구조의 분류
2.1 배열 기반
public class Quene {
private int size;//
private int front;//
private int rear;//
private int[] theQuene;//
private int items;//
public Quene(int size){
this.size = size;
theQuene = new int[size];
front = 0;
rear = -1;
items = 0;
}
//
public void insert(int value){
if(rear == size - 1){
// , -1,
rear = -1;
}
theQuene[++rear] = value;
items++;
}
//
public int remove(){
int temp = theQuene[front++];
if(front == size){
front = 0;
}
items--;
return temp;
}
//
public int peek(){
return theQuene[front];
}
//
public boolean isEmpty(){
return (items == 0);
}
//
public boolean isFull(){
return (items == size);
}
//
public int sizeOf(){
return items;
}
}
2.2 링크 기반
public class LinkedListQuene<T> {
//
private int queneLength = 0;
//
private Node first;
//
private Node last;
//
private class Node {
//
Node next;
//
T value;
private Node(T value) {
this.value = value;
}
}
public boolean isEmpty() {
return queneLength == 0;
}
public int depth() {
return queneLength;
}
public int enquene(T value) {
Node node = new Node(value);
// ,
if (isEmpty()) {
first = node;
last = node;
queneLength++;
return 1;
} else {
Node oldNode = last;
oldNode.next = node;
last = node;
queneLength++;
return 1;
}
}
public T dequene() {
if (isEmpty()) {
return null;
} else {
T value = first.value;
first = first.next;
queneLength--;
return value;
}
}
public T peek() {
if (isEmpty()) {
return null;
} else {
return first.value;
}
}
}