본문 바로가기
Java | spring/Java Basic

자료구조, Stack 스택과 큐 Queue

by 워니 wony 2019. 5. 7.

프로그램 개발할 가장 많이 사용하는 자료 구조인 스택과

 

스택은 상자를 쌓아 올리는 형태의 구조이고, 큐는 일상 생활에서 많이 사용하는 방식의 자료 구조 '선착순'

정보처리기사 필기에도 자주 기출문제로 출제되는 자료구조로 참고로 알고 있으면 좋다.

 

 

Stack(스택)

스택은 사전적 의미로 '더미' , '쌓아 올림'이라는 의미이다.

 

자료를 넣는 곳과 꺼내오는 곳이 방향에서 이루어진다. 

 

스택은 데이터를 쌓아 올리는 형태로 입력 및 저장하고, 출력하는 경우  위에 데이터를 먼저 꺼내는 형태, 제일 마지막에 저장한 데이터를 제일 먼저 꺼내는 후입선출 형태의 자료 구조.

 

LIFO : Last In First Out

LIFO 구조

 

스택 메소드

ㅇ push 메소드

push 스택에 자료를 넣는

E

push(E item)

Pushes an item onto the top of this stack.

출처: <https://docs.oracle.com/javase/8/docs/api/java/util/Stack.html>

 

ㅇ pop 메소드

pop 스택에 자료를 가져 오는 . 꺼내지면 데이터가 삭제됨

E

pop()

Removes the object at the top of this stack and returns that object as the value of this function.

 

import java.util.Stack;

class StackTest 
{
	public static void main(String[] args) 
	{
		Stack st = new Stack();

		st.push("사과");
		st.push("수박");
		st.push("체리");
		st.push("복숭아");
		st.push("바나나");

		int n = st.size();

		for ( int i = 0 ; i<n ; i++ )
		{
			System.out.print(st.size()+" / ");
			System.out.println(st.pop());
		}
	}
}

(결과값)

5 / 바나나

4 / 복숭아

3 / 체리

2 / 수박

1 / 사과

 

 

ㅇ peek 메소드

- 스택에서 자료를 꺼내지만 없애는 것은 아니다.

E

peek()

Looks at the object at the top of this stack without removing it from the stack.

 

import java.util.Stack;

class StackTest 
{
	public static void main(String[] args) 
	{
		Stack st = new Stack();

		st.push("사과");
		st.push("수박");
		st.push("체리");
		st.push("복숭아");
		st.push("바나나");

		int n = st.size();

		for ( int i = 0 ; i<n ; i++ )
		{
			System.out.print(st.size()+" / ");
			System.out.println(st.peek());
		}
	}
}

5 / 바나나

5 / 바나나

5 / 바나나

5 / 바나나

5 / 바나나

 

 

Queue()

 

자료가 들어가는 곳과 나오는 곳이 서로 다르다.

Queue는 Line 이라는 의미를 가지고 있다. 데이터의 제거는 대기 줄의 가장 앞에서 수행되며 데이터의 삽입은 대기 줄의 가장 뒤에서 수행이 되는 제한된 리스트 구조를 말하며 가장 먼저 삽입된 데이터가 가장 먼저 제거되는 선입선출 자료구조, 쉽게 이야기해서 선착순, 은행 대기 순번 같은 것을 이야기할 수 있다.

 

FIFO : First In First Out

FIFO 구조

반응형

댓글