article thumbnail image
Published 2022. 8. 16. 19:22

스택(Stack)이란?


  • 최근에 삽입된 데이터가 가장 먼저 나가는 LIFO(Last In First Out) 구조를 가진 자료구조(Structure)
  • 스택이란 단어의 사전적 용어는 '차곡 차곡 쌓여진 더미'를 의미합니다.
  • 메모리에서의 스택 영역은 함수의 호출과 관계되는 지역변수, 매개변수, 리턴 값등의 임시데이터를 저장합니다.
  • 스택에서 top을 통해 삽입하는 연산을 push, top을 통한 삭제하는 연산을 pop이라고 합니다.

Stack 실생활 예시를 들자면 과자 프링글스 다들 아시죠? 제일 나중에 넣은 칩 조각을 가장 먼저 먹게되는 것과 같은 이치라고 생각하시면 됩니다!

 

 

Stack 그림 예시

위의 그림을 보시면 스택은 top으로 정한 곳을 통해서만 접근할 수 있습니다.

top은 가장 최근에 들어온 자료를 가리키고 있으며 만약 자료가 새로 삽입된다면 top이 가리키는 자료의 위에 쌓이게 됩니다.

삭제할 때도 마찬가지로 top을 통해서만 가능합니다.

Queue란?


  • Queue의 사전적 의미는 '줄을 서서 기다리는 것' 입니다.
  • 가장 먼저 삽입된 데이터가 가장 먼저 나가는 FIFO(First in Frist Out) 구조를 가진 자료구조
  • 스택과 다른점은 스택의 경우 삽입과 삭제가 한쪽에서 일어나지만 큐의 경우는 삽입과 삭제가 다른 쪽에서 일어난다는 점입니다.
  • 큐에서 삽입(EnQueue)이 일어나는 곳을 Rear라고 하며 삭제(Dequeue)가 일어나는 곳을 Front라고 합니다.

Queue의 실생활 예시를 들자면 음식점을 생각하시면 될거 같습니다. 음식점은 먼저 주문한 사람의 음식을 제조하는데 바로 이게 FIFO 방식입니다.

 

 

 

Queue의 예시 그림

스택과 달리 큐는 삽입 삭제가 한 곳에서 일어나 Top이라는 변수가 한 개 필요했다면 큐의 경우는 2개의 변수가 필요합니다 (Rear, Front)

'CS > DataStructure' 카테고리의 다른 글

이진 탐색 트리 (Binary Search Tree)  (0) 2022.09.05
Binary Tree(이진 트리)와 그종류  (2) 2022.08.31
트리(Tree)란?  (0) 2022.08.30
Array vs Linked List  (0) 2022.08.15
복사했습니다!