본문 바로가기
개발일지

Stack과 Queue 그리고 Array와 Linked List

by 윤승임 2023. 4. 4.

Stack과 Queue 그리고 Array와 Linked List는 자료구조 중에서 가장 기본적이면서도 중요한 구조체이다.

Stack

LIFO(Last-In-First-Out) 구조로, 가장 최근에 추가된 항목이 가장 먼저 제거됨.

push(추가)와 pop(제거) 연산을 지원

예시: 브라우저의 이전 버튼, 실행 취소 기능 등


Queue

FIFO(First-In-First-Out) 구조로, 가장 먼저 추가된 항목이 가장 먼저 제거됨. (순서가 있다)

enqueue(추가)와 dequeue(제거) 연산을 지원

예시: 대기열(Queue) 시스템, 메시지 큐 등 


Array

같은 종류의 데이터를 연속된 메모리 공간에 저장하는 자료구조

인덱스를 사용하여 특정 항목에 접근할 수 있다.

크기를 미리 정해야 하며, 크기가 고정되어 있다.

예시: 정렬된 데이터, 자주 참조되는 데이터

*어레이를 동적으로 확장하는 방법

 


Linked List

불연속적인 메모리 공간에 데이터를 저장하는 자료구조

포인터를 사용하여 각 항목들이 서로 연결되어 있다.

삽입, 삭제 연산에 효율적

예시: 큐, 스택, 그래프 탐색 등


Stack과 Queue는 각각 LIFO와 FIFO 구조를 가지며, 데이터의 추가와 제거를 지원한다.
Stack은 push와 pop 연산을, Queue는 enqueue와 dequeue 연산을 사용한다.

이러한 구조를 이용하여 브라우저의 이전 버튼, 대기열 시스템 등을 구현할 수 있다.


Array와 Linked List는 데이터를 저장하는 방식이 다르다.

Array는 연속된 메모리 공간에 데이터를 저장하고, 인덱스를 사용하여 특정 항목에 접근한다.

Linked List는 포인터를 사용하여 각 항목이 서로 연결되어 있어서 삽입, 삭제 연산에 효율적이지만, 인덱스를 사용하여 랜덤 접근하는 것은 불편하다.

Array는 정렬된 데이터나 자주 참조되는 데이터에 유용하며, Linked List는 큐, 스택, 그래프 탐색 등에 유용하다.

그러나 Linked List는 각 항목마다 포인터를 저장해야 하므로 메모리 사용량이 더 많다.