본문 바로가기


[JAVA/자료구조] 큐(Queue)와 


스택(Stack) 구현하기




Java로 큐와 스택을 구현을 해봅시다


우선 큐와 스택을 알아야겠죠?



큐(Queue)란 선입선출 구조입니다.


먼저들어온게 먼저나간다는 소리입니다.


예를 들면 영화 티켓구매하기 위해서는 줄을 서야하겠죠?


맨 앞사람이 가장 빨리 왔으니 가장빨리 예매를 하겠죠?




그림으로 보자면



반대로 스택(Stack)은 후입선출 구조입니다.


나중에 들어온게 먼저 나간다는 소리입니다.


예를 들자면 뷔폐에 있는 접시를 생각하면 되겠습니다.


맨 위에 접시가 올려지고 


맨 위 접시가 가장 빨리 나갑니다.




그림으로 보자면



그럼 이제 큐와 스택을 이해했으니


실제로 구현을 해봅시다



먼저 큐(Queue) 입니다.



public class Queue {


private int front;

private int rear;

private int maxSize;

private Object[] queue;

// 처음 큐 생성

public Queue(int maxSize) {

this.maxSize = maxSize;

this.front = 0;

this.rear = -1;

this.queue = new Object[maxSize];

}

// 꽉차있는지 확인

public boolean full() {

return (rear == maxSize-1);

}

// 비어있는지 확인

public boolean empty() {

return (front == rear+1);

}

// 큐에 객체 넣기

public void insert(Object item) {

if(full()) throw new ArrayIndexOutOfBoundsException();

        

        queue[++rear] = item;

}

// 큐 객체 가져오기

public Object peek() {

if(empty()) throw new ArrayIndexOutOfBoundsException();

return queue[front];

}

// 큐 객체 삭제하기

public Object remove() {

Object item = peek();

front++;

return item;

}

public static void main(String[] args) {

Queue queue = new Queue(10);

queue.insert(1);

queue.insert(2);

queue.insert(3);

System.out.println(queue.remove());

System.out.println(queue.remove());

System.out.println(queue.remove());

}


}




다음은 스택(Stack) 입니다.


public class Stack {

private int top;

private int maxSize;

private Object[] stack;

//배열 생성, 스택 생성

public Stack(int maxSize) {

this.maxSize = maxSize;

this.stack = new Object[maxSize];

this.top = -1;

}

public boolean emtpy() {

return (top == -1);

}

public boolean full() {

return (top == maxSize-1);

}

// 스택 객체 넣기

public void push(Object item) {

if(full()) {

throw new ArrayIndexOutOfBoundsException();

}

stack[++top] = item;

}

// 스택 객체 선택

public Object peek() {

if(emtpy()) {

throw new ArrayIndexOutOfBoundsException();

}

return stack[top];

}

// 스택 객체 빼기

public Object pop() {

Object item = peek();

top--;

return item;

}

public static void main(String[] args) {

Stack stack = new Stack(10);

stack.push(1);

stack.push(2);

System.out.println(stack.pop());

System.out.println(stack.pop());

System.out.println(stack.pop());

}


}



여기까지가 큐와 스택 규현 입니다.


이만 큐(Queue)와 스택(Stack) 구현하기 포스팅을 마치겠습니다.


엉망진창

개인 블로그 입니다. 코딩, 맛집, 정부정책, 서비스, ~방법 등 다양한 정보를 소개합니다