[μλ£κ΅¬μ‘°] ν (Queue) ꡬν (Java)
πν(Queue) λ?
μ μ
μ μΆ('FIFO') λ°©μμΌλ‘ κ°μ₯ λ¨Όμ λ€μ΄μ¨ λ°μ΄ν°κ° κ°μ₯ λ¨Όμ λκ°λ€
λ°μ΄ν°λ₯Ό μ½μ
νλ μ°μ°κ³Ό μμ νλ μ°μ°μ΄ μμͺ½μμ μ§νλλ€.
πν ꡬν λ©μλ
λ°°μ΄μ μ΄μ©ν΄μ μ«μλ₯Ό μ¬λ¬κ° μ μ₯ν μ μκ² λ³μ μμ±
λ°°μ΄μ μ§μ μ κ·Όν΄μ μ«μλ₯Ό μ μ₯ν μ μμΌλ©΄ μλκΈ° λλ¬Έμ μ κ·Ό μ μ΄μλ‘ μ μ΄
front λ³μ : 맨 μμ λ°μ΄ν°κ° μ΄λμ μ μ₯λκ±΄μ§ κ°λ¦¬ν΄
rear λ³μ : λ€μ λ°μ΄ν°κ° μ΄λμ μ μ₯λ κ±΄μ§ κ°λ¦¬ν΄
num λ³μ : νμ¬ μ μ₯λ λ°μ΄ν°μ μλ₯Ό μ μ₯ν¨
πΎ μμ±μ
ν¬κΈ°λ₯Ό μ λ¬λ°μμ ν΄λΉ ν¬κΈ°λ§νΌ μ μλ₯Ό μ μ₯ν μ μλ λ°°μ΄ μμ±
front λ° rearλ 0 μ μ μ₯
πΎ isEmpty; νκ° λΉμ΄μλμ§ κ²μ¬
numκ° 0μ΄λ©΄ true λ°ν
κ·Έλ μ§ μμΌλ©΄ false λ°ν
πΎ isFull; νκ° κ°λ μ°¨μλμ§ κ²μ¬
λ°°μ΄μ ν¬κΈ°κ° numλ κ°μΌλ©΄ true λ°ν
κ·Έλ μ§ μμΌλ©΄ false λ°ν
πΎ enQueue; λ°μ΄ν°λ₯Ό μ μ₯νλ μ°μ°
μ μ₯ν μ«μλ₯Ό νλ μ λ¬λ°κ³
νκ° κ°λ μ°ΌμΌλ©΄ κ°λμ°Όλ€κ³ μΆλ ₯
κ·Έλ μ§ μμΌλ©΄ νμ¬ rearμ μμΉμ λ°°μ΄μ μ λ¬λ°μ μ«μλ₯Ό μ μ₯νκ³ rear 1μ¦κ° ν num 1 μ¦κ°
πΎ deQueue; λ°μ΄ν°λ₯Ό μμ νλ μ°μ°
νκ° λΉμ΄μμΌλ©΄ λΉμ΄μμ μ΄λΌκ³ μΆλ ₯
κ·Έλ μ§ μμΌλ©΄ νμ¬ frontμ μμΉμ λ°°μ΄μ κ°μ κΊΌλ΄κ³ front 1μ¦κ° ν num 1 κ°μ
πΎ display
νμ μ μ₯λ λͺ¨λ λ°μ΄ν°λ₯Ό μΆλ ₯νλ κΈ°λ₯
πꡬν μ½λ
package stack;
public class Queue {
private int front = 0;
private int rear = 0;
private int num = 0;
private Integer[] queue;
public Queue(int size) {
this.size = size;
queue = new Integer[size];
}
int size;
public boolean isEmpty(){
if(num == 0) return true;
else return false;
}
public boolean isFull(){
if(num == size) return true;
else return false;
}
public void enQueue(int x){
if(isFull()) System.out.println("νκ° κ°λ μ°Έ");
else {
queue[rear%size] = x;
rear= (rear+1)%size;
num++;
}
}
public void deQueue(){
if(isEmpty()) System.out.println("νκ° λΉμ΄ μμ");
else {
System.out.println(queue[front]);
queue[front] = null;
front++;
num--;
}
}
void display(){
for (int i = 0; i < size; i++) {
System.out.print("[" + queue[i] + "] ");
}
System.out.println();
}
}