큐
2024. 3. 21. 18:29ㆍ멋쟁이사자처럼
선입선출
큐의 중요 키워드
- enQueue : 큐의 뒷쪽에 새로운 요소 추가
- deQueue : 큐의 앞쪽에서 요소를 제거하고 반환
- peek : 큐의 앞쪽에서 요소를 제거하지 않고 반환
- front : 현재 반환해야되는 요소을 가르키는 배열의 인덱스
- rear : 마지막 요소의 다음 위치를 가리키는 인덱스
- count : 현재 큐에 저장된 요소의 개수
<코드>
public class MyQueue {
private int[] queueArray;//큐
private int front;//큐의 맨 앞 값의 인덱스
private int rear;//큐 맨 뒤 값의 다음 인덱스
private int capacity;//큐최대용량
private int count;//큐에 저장된 데이터의 수
public MyQueue(int capacity){
this.capacity = capacity;
queueArray = new int[capacity];
front=0;
rear=0;
count=0;
}
//큐에 추가하는 메소드
public void enqueue(int item){
if(count == capacity){
System.out.println("큐가 가득찼어요.");
}else {
queueArray[rear] = item;
// rear++; //선형큐 이부분을 수정해서 원형 큐로 변환
rear = (rear+1) % capacity;
count++;
}
}
//큐에서 item을 반환하고, 삭제해주는 메서드
public int dequequ(){
if(count==0){
System.out.println("큐가 비었어요.");
return -1;
}else{
int item = queueArray[front];
// front++;
front = (front+1) % capacity;
count--;
return item;
}
}
public int peek(){
if(count==0){
System.out.println("큐가 비었어요.");
return -1;
}else{
return queueArray[front];
}
}
public boolean isEmpty(){
return count == 0;
}
public static void main(String[] args) {
MyQueue queue = new MyQueue(5);
queue.enqueue(1);
queue.enqueue(2);
queue.enqueue(3);
System.out.println(queue.dequequ());//1
System.out.println(queue.peek()); //2
System.out.println(queue.dequequ()); //2
queue.enqueue(4);
System.out.println(queue.dequequ()); //3
queue.enqueue(5);
queue.enqueue(6);
}
}
'멋쟁이사자처럼' 카테고리의 다른 글
재귀함수를 이용한 유클리드 호제법(최대 공약수) (0) | 2024.03.21 |
---|---|
재귀함수와 꼬리재귀 (0) | 2024.03.21 |
스택 (0) | 2024.03.21 |
이진 탐색 (0) | 2024.03.20 |
순차 탐색, 보초법 (0) | 2024.03.20 |