스택은 순서가 정해진 자료구조로 일상생활에서 예시를 찾자면 바닥부터 위로 쌓여 있는 책, 혹은 비비탄 총알을 채워넣는 것을 생각해볼 수 있다.
(출처 https://cloudstudying.kr/lectures/141)
왜 비비탄 총이냐면 스택의 용어로는
Push : 스택에 데이터를 삽입
Top : 가장 위에 쌓인 데이터(최근 것임)
Pop : 가장 위에 데이터를 제거하는 것(비비탄을 뺄 때 맨 위에가 팝하고 빠진다고 생각하면 된다.)
Peek : top에 위치한 데이터를 읽는 것
항상 맨 위에 top에서만 자료의 삽입과 삭제가 이루어진다는게 특징이다.
스택은 Last In First Out(LILO) 후입선출 원칙이 나타난다.
맨 마지막에 입력된 자료가 가장 먼저 삭제될 수 있다는 의미이다.
기억해야할 점은 공간이 부족한데 데이터를 삽입할 경우 넘치는 현상 즉 Overflow가 발생하고 데이터가 하나도 없는데 삭제할 경우 Underflow가 발생한다. 메모리도 동적이고 데이터도 순서대로 정렬되지만 한 번에 하나의 데이터만 처리한다는 것이 단점이다.
큐도 순서가 정해진 자료구조로 스택과의 차이점은 들어온 순서대로 삭제되는 형태라는 점이다. 일상에서 예시로는 급식을 받기 위해 줄 서 있는 학생들을 생각해볼 수 있다
(출처 https://galid1.tistory.com/483)
데이터의 삽입은 Rear(뒤쪽)에서 이루어지며 데이터 삽입을 Enqueue라 한다. Front(앞쪽)에서는 데이터의 삭제가 이루어지며 이를 Dequeue라 한다. 스택과 마찬가지로 front 부분의 데이터를 읽는 것은 peek라 한다.
큐는 Firts In First Out(FIFO) 선입선출 원칙이 나타난다.
먼저 들어온 데이터가 먼저 사라지는 것이다.
스택과 마찬가지로 동적인 메모리 크기를 가지고 있다. 런타임도 빠르다. 그러나 스택처럼 한 번에 하나의 데이터만 처리하는게 단점이다.