선형 큐

함수

  • create
  • init
  • is_full
  • is_empty
  • enqueue
  • dequeue
  • peek

queue의 front와 rear 포인터의 위치를 보면서(두 위치가 -1이면 init, 두 위치가 같으면 is_empty() 상태, rear가 인덱스 맨 뒤에 있으면 포화상태) 큐의 상태를 알 수 있다.
front, rear를 먼저 움직인 다음, 원소를 빼고 넣는다는 것을 기억하자!

구현코드

package queue;

class Queueinfo {
	int front;
	int rear;
	int[] queue;
	
	public void create(int max_size) {
		this.queue= new int[max_size];
	}
	public void init() {
		this.front=this.rear=-1;
	}
	public boolean is_empty() {
		return front==rear;
	}
	public boolean is_full() {
		return rear==this.queue.length-1;
	}
	public void enqueue(int item) {
		if(is_full()) System.out.println("큐가 다 찼습니다");
		else {
			++this.rear;
			this.queue[rear]=item;
			System.out.println(this.rear+"에"+this.queue[this.rear]+"를 넣었습니다");

		}
	}
	public int dequeue() {
		if(is_empty()) {
			System.out.println("큐에서 뺄게 없습니다");
			return 0;
		}
		else {
			System.out.println(++this.front+"에"+this.queue[this.front]+"를 뺐습니다");
			return this.queue[this.front];
		}
	}
	public void peek() {
		if(is_empty()) {
			System.out.println("볼 게 엄서요");
		}
		else {
			front++;
			System.out.println(this.queue[this.front--]); 
		}
	}
}
public class linearqueue {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Queueinfo queue= new Queueinfo();
		queue.create(3);
		queue.init();
		queue.enqueue(0);
		queue.enqueue(1);
		queue.enqueue(2);
		queue.enqueue(3);
		queue.peek();
		queue.dequeue();
		queue.dequeue();
		queue.dequeue();
		queue.dequeue();
		queue.peek();
		
	}

}

좋은 웹페이지 즐겨찾기