CS

Stack vs Queue

서머스 2022. 9. 23. 10:52

Stack

- LIFO 방식(Last-In, First-Out)

- 후입선출방식

- 나중에 들어온 것이 먼저 나오게 된다.

 

Stack ADT 

void Init(Stack * stack);

- 스택의 초기화

- 스택 생성 후 제일 먼저 호출되어야 하는 함수

 

void IsEmpty(Stack * stack);

- 스택이 빈 경우 True(1), 그렇지 않은 경우 False(0)을 반환

 

void Push(Stack * stack, Data data);

- 스택에 데이터를 저장

- 매개변수 data로 전달된 값 저장

 

Data Pop(Stack * stack)

- 마지막에 지정된 요소를 삭제

- 삭제된 데이터는 반환됨

- 본 함수의 호출을 위해서는 데이터가 하나 이상이 존재함을 보장해야 함

 

Data Top(Stack * stack)

- 마지막에 저장된 요소 반환, 삭제X

- 본 함수의 호출을 위해서는 데이터가 하나 이상 존재함이 보장

 

 

Queue

- FIFO(First-In, First-Out) 구조

- 선입선출방식 

 

Queue ADT 

void Init(Queue * queue);

- 큐의 초기화

- 큐 생성 후 제일 먼저 호출되어야 함

 

void IsEmpty(Queue * queue);

- 큐가 빈 경우 True(1), 그렇지 않은 경우 False(0)을 반환

 

void hEnqueue(Queue * queue, Data data);

- 큐에 데이터를 저장

- 매개변수 data로 전달된 값 저장

 

Data Dequeue(Queue * queue)

- 저장순서가 제일 앞선 요소를 삭제

- 삭제된 데이터는 반환됨

- 본 함수의 호출을 위해서는 데이터가 하나 이상이 존재함을 보장해야 함

 

Data Top(Queue * queue)

- 마지막에 저장된 요소 반환, 삭제X

- 본 함수의 호출을 위해서는 데이터가 하나 이상 존재함이 보장

 

Deque(덱)

- double-ended queue

- 큐는 뒤로 넣고 앞으로 빼지만, 덱은 앞으로도 뒤로도 넣고 뺄 수 있는 자료구조이다.

- 스택과 큐의 특성을 조합한 형태의 자료구조

 

 

 

 

 참고 - 윤성우의 열혈 자료구조

 

 

'CS' 카테고리의 다른 글

Tree  (0) 2022.09.24
Array vs Linked List  (0) 2022.09.23
MVC 패턴  (0) 2022.09.16
함수형 프로그래밍  (0) 2022.09.16
TDD  (0) 2022.09.16