Stack, Queue

Mixer·2022년 5월 26일
0
post-thumbnail

자료구조

자료구조란?

여러 데이터의 묶음을 저장하고, 사용하는 방법을 말하낟

데이터는 무엇일까?

문자, 숫자, 그림, 소리, 영상 등 실생활을 구성하고 있는 모든 값이다
심지어 우리도 데이터로써 나이, 키, 집 주소, DNA 까지 데이터로 분류가 가능하다.
그렇지만 데이터만 가지고는 어떤 정보를 가지고 있기 무리가 있다.
예를 들어 나이 데이터만을 가지고 있다면, 사람의 나이인지, 동물의 나이인지, 나무의 나이인지 알 수 없다.
그러니 데이터는 분석을 하고 정리해서 활용해야만 의미를 가진다.

- 자료구조의 종류와 구분

앞으로 꾸준히 등장하는 네 가지의 자료구조

  • Stack, Queue, Tree, Graph

자료 구조는 특정한 상황에 놓인 문제를 해결하는데 특화되어있으며, 많은 자료구조를 알아두면, 어떤 상황이 오더라도 적합한 자료구조를 빠르고 정확히 적용해 문제를 해결할 수 있다.
👉🏼 자료구조는 문제 해결력을 필요로 하는 알고리즘 테스트와 굉장히 밀접하게 연관되어있다.

Stack

Stack은 사전적으로 쌓다,쌓이다 라는 뜻을 가지고있으며
자료구조에서도 그대로 데이터를 순서대로 쌓는다.
Stack의 특징
👉🏼 입력과 출력이 하나의 방향으로만 이루어져있어 접근이 제한적이다.

Stack 자료구조의 정책
LIFO (Last In First Out) / FILO (First IN Last Out)

<이미지 추가 예정>

Stack<Integer> list = new Stack<>(); // Integer타입 스택 선언

list.push(4);
list.push(3);
list.push(2);
list.push(1);
-----------------
4 <- 3 <- 2 <- 1
-----------------
push로 들어간 순대로, 4번이 제일 먼저 들어가고, 1번이 가장 마지막에 들어간다.

list.pop();
4 3 2 -> 1
list.pop();
4 3 -> 2 
list.pop();
4 -> 3
list.pop();
-> 4

1, 2, 3, 4
제일 마지막에 있던 1있던 1부터 순서대로 리턴된다.

데이터는 하나씩 넣고 뺄 수 있다.

Stack 자료구조는 데이터가 아무리 많이 존재하더라도, 하나씩 데이터를 넣고 뺀다

하나의 입출력 방향을 가지고 있다.

Stack 자료구조는 데이터의 입출력 방향이 같다. 만약 입출력 방향이 어러 개면 Stack 자료구조로 볼수 없다.

Stack method()

  • push(): 스택에 데이터를 추가한다.
  • pop(): 가장 나중에 추가된 데이터를 스택에서 삭제하고 삭제한 데이터를 리턴 한다.
  • size(): 스택에 추가된 데이터의 크기를 리턴 한다.
  • peek(): 가장 나중에 추가된 데이터를 리턴해야 한다.
  • show(): 현재 스택에 포함되어 있는 모든 데이터를 <> 타입으로 변환하여 리턴한다.
  • clear(): 현재 스택에 포함되어 있는 모든 데이터 삭제

Queue

Queue는 사전적으론 줄을 서서 기다리다, 대기 행렬의 뜻을 가지고있다.
Queue 와 Stack은 반대의 개념이다.
Queue는 Stack 상반되게
👉 데이터가 입력된 순서대로 처리할 때 주로 사용
Queue는 먼저 들어간 데이터가 먼저 나오는 FIFO (First In First Out)/ LILO (Last In Last Out)의 특징이 있다.

<이미지 추가 예정>

Queue<Integer> queue = new Queue<>(); Integer타입의 queue 선언

queue.add(1);
queue.add(2);
queue.add(3);
queue.add(4);

 출력방향<--------------------- < 입력 방향
		1 <- 2 <- 3 <- 4
	---------------------
queue.poll();
1<- 2 3 4
queue.poll();
2<-   3 4
queue.poll();
3<-     4
queue.poll();
4<-

1, 2, 3, 4
첫번째 있던 데이터부터 입력한 순서대로 나오게 된다.

데이터는 하나씩 넣고 뺄 수 있다.

Stack과 동일하게 Queue 자료구조 역시 데이터가 아무리 많아도 하나씩 넣고 빼기만 가능하다

두 개의 입출력 방향을 가지고 있다.

Stack과 비견되게 Queue 자료구조는 데이터의 입력, 출력 방향이 다르다, 만약 입출력 방향이 같으면 Queue로 볼수 없다.

Queue method()

add(): 큐에 데이터를 추가한다.
poll(): 가장 먼저 추가된 데이터를 큐에서 삭제하고 삭제한 데이터를 리턴한다.
size(): 큐에 추가된 데이터의 크기를 리턴한다.
peek(): 큐에 가장 먼저 추가된 데이터를 리턴한다.
show(): 큐에 들어있는 모든 데이터를 <> 타입으로 변환하여 리턴한다.
clear(): 큐에 들어있는 모든 데이터를 삭제

profile
Minthug'life

0개의 댓글