Stack
Stack은 쌓다, 쌓이다와 같은 사전적 의미 그대로 데이터를 순서대로 쌓아놓은 형태의 자료구조입니다.
Stack의 작동원리
Stack에 데이터가 수직으로 탑-다운 방식으로 보관된다고 하였을 때,
Stack에 1, 2, 3, 4, 5 라는 데이터를 순서대로 넣고난 후
데이터를 빼낸다면 가장 위에 위치한 데이터, 즉 5부터 빠지는 후입선출의 구조를 가지고 있습니다.
Stack의 특징
1. 위에서 언급한 후입선출, LIFO ( Last In First Out )의 특징을 가지고 있습니다.
2. 데이터는 한번에 하나만 넣고 뺄 수 있습니다.
3. 하나의 입출력 방향을 가지고 있습니다.
4. Stack에 저장되는 데이터는 유한하고 정적입니다.
- Call Stack, Stack Frame과 밀접한 연관이 있습니다.
아래 링크들의 글에 설명이 되어있습니다.
참조 링크1
참조 링크2
5. 크기가 제한되어 있습니다.
Queue
Queue는 무엇을 기다리는 줄, 대기 행렬이란 사전적 의미를 가지고 있습니다.
데이터가 입력된 순서대로 처리할 때 주로 사용합니다.
Queue의 작동원리
Queue에 데이터가 수직으로 왼쪽에서 탑-다운으로 보관된다고 하였을 때,
Queue에 1, 2, 3, 4, 5 라는 데이터를 순서대로 넣고난 후
데이터를 빼낸다면 가장 밑에 위치한 데이터, 즉 1부터 빠지는 선입선출의 구조를 가지고 있습니다.
Queue의 특징
1. Stack과는 반대로 선입선출의 구조를 가지고 있습니다.
2. Stack과 똑같이, 한번에 하나의 데이터만 조작할 수 있습니다.
3. 두 개의 입출력 방향을 가지고 있습니다.
- Queue는 입력과 출력되는 방향이 서로 다릅니다.
Stack과 Queue의 차이점
1. 데이터 입출력의 방향과 갯수
2. 데이터를 꺼내는 방식