본문 바로가기
📍 CS/Data Structure

[19JAN, 2021] Stack & Queue 개념정리

by briee 2021. 1. 19.

Stack과 Queue에 들어가기 앞서 자료구조에 대해 간단히 짚고 넘어가자!

 

자료구조(Data Structure)란?

자료구조라는 말을 이해하기 위해선 데이터 즉 자료란 무엇인지, 데이터 타입은 무엇인지를 알아야 원활하게 이해할 수 있을 것이다.

 

자료(Data)란, 문자, 숫자, 그림, 영상. 단어 등의 형태로 된 의미단위로 이 세상의 모든 것은 자료, 즉 데이터가 될 수 있다. 그리고 이 데이터들은 컴퓨터에 0과 1로 저장되어 있는데 이 데이터를 어떻게 해석하고 처리해야 할지 정의한 것이 데이터 타입이다. 데이터 타입은 우리가 앞서 많이 배웠듯 Primitive 타입과  Reference 타입이 있다. 이러한 데이터들을 더 효율적으로 저장하고 관리(사용)할지 정의한 것이 자료구조이다. 수많은 데이터를 자료구조를 통해 더 효율적으로 저장하고 관리할 수 있는 것이다.

 

위키백과에서는 '컴퓨터 과학에서 효율적인 접근 및 수정을 가능케 하는 자료의 조직, 관리, 저장을 의미한다. 더 정확히 말해, 자료 구조는 데이터 값의 모임, 또 데이터 간의 관계, 그리고 데이터에 적용할 수 있는 함수나 명령을 의미한다.'라고 자료구조를 정의하고 있다.

 


 

오늘은 여러 종류의 자료구조 중 Stack과 Queue를 정리해보자.

 

Stack(스택) :

Stack의 구조를 그림으로 정리해보면 다음과 같다.

Stack은 Last in, First out으로 데이터가 밑에서부터 차곡차곡 쌓여서 추가될 때 맨 위로 추가되고, 데이터가 나갈 때도 맨 위에서부터 차례대로 나간다. 출입구가 동일한 것으로 만약 접시를 쌓는다고 할 때, 새로운 접시가 쌓일 때도 맨 위에서 쌓이고, 접시를 가져갈 때도 맨 위에서 가지고 가는 것과 같다. 이 모습을 그림으로 표현하면 다음과 같다.

데이터1부터 밑에서 쌓이고 데이터 4 다음으로 새로운 데이터가 들어온다. 만약 데이터 5가 들어온 뒤 제거되면 다음 데이터인 데이터 4가 제거된다.

 

 

Method (메서드) :

*push(): stack 맨 위에 새 요소를 추가

*pop(): stack 맨 위의 데이터 삭제

*peek(): stack의 최상위 요소 반환

*clear(): stack 초기화

*size(): 현재 stack에 있는 총 개수 반환

 


 

Queue(큐) : 

Queue는 한국어로 '대기열'이라는 뜻을 가지고 있으며, 영국에서는 사람들이 서 있는 줄을 큐라고 부른다고 한다. Queue의 구조를 그림으로 정리해보면 다음과 같다.

 

Queue는 First in, First out으로 차례차례 데이터가 들어와서 먼저 들어온 데이터가 먼저 나가게 된다. 큐는 입구와 출구가 구분되어 있다. 놀이공원에서 놀이기구를 타기 위해 줄을 선 모습을 생각해보자. 사람들이 맨 끝에 줄을 서고, 맨 앞에서부터 놀이기구에 탑승하는 것과 같이 맨 앞에서부터 나가고, 맨 뒤로 추가된다.

 

 

Method (메서드) :

*enqueue: queue 맨 뒤에 새 요소를 추가

*dequeue: queue맨 앞의 데이터 삭제하고 그 데이터를 반환

*size: 현재 queue에 있는 총 개수 반환

 

나는 enqued와 dequeue를 확실히 하기 위해 그림으로 표현해보았다.

 


오늘은 Stack & Queue의 1탄으로 개념을 먼저 확실히 정리해보았다! 

오늘도 지식 + 1 !

'📍 CS > Data Structure' 카테고리의 다른 글

[21JAN, 2021] Graph  (1) 2021.01.22