개발하는 체대생

Stack, Queue, Array, Linked List 본문

취업스터디

Stack, Queue, Array, Linked List

개발하는체대생
질문 : Stack과 Queue 그리고 Array와 Linked List 자료구조에 대해 말씀해주시고 차이점에 대해 설명해주세요.

답변 : 
Stack은 제일 마지막에 넣은 데이터가 가장 먼저 나오는 LIFO 형태의 자료구조입니다.
Queue는 제일 먼저 넣은 데이터가 가장 먼저 나오는 FIFO 형태의 자료구조입니다.
Array는 순차적으로 데이터가 저장이 되는 있는 정적자료 구조입니다.
Linked List 각 노드들이 서로 연결되어 있는 형태의 동적자료 구조입니다.

 

Stack

Stack 나중에 넣은 데이터가 먼저 나오는(LIFO, Last-In-First-Out) 자료구조입니다. Stack은 아래 사진과 같이 한쪽 방향이 막혀있는 구조로 되어 있고 Push(데이터 삽입)Pop(데이터 제거) 메소드를 사용하여 데이터를 조작합니다. 이러한 특성 때문에 Stack은 함수 호출(Call Stack), 브라우저의 방문 기록 등의 상황에서 사용됩니다.

 

Queue

Queue 먼저 넣은 데이터가 먼저 나오는(FIFO, First-In-First-Out) 자료구조입니다. Queue는 아래 사진과 같이 위 아래가 뚫려 있는 구조로 되어 있고 Enqueue(데이터 삽입)Dequeue(데이터 제거) 메소드를 사용하여 데이터를 조작합니다. 이러한 특성 때문에 Queue는 대기열, 우선순위 큐(Priority Queue) 등의 상황에서 사용됩니다.

 

Array

Array는 일련의 연속된 메모리 공간에 데이터를 저장하는 정적 자료구조입니다. 배열은 정적 자료구조이기 때문에 배열을 만들기 위해서는 미리 크기를 지정해주어야하고 한 번 생성되면 크기를 변경할 수 없습다는 특징을 가지고 있습니다. 또한 배열은 연속된 메모리 공간에 데이터를 저장하기 때문에 인덱스를 사용하여 데이터에 빠르게 접근 할 수 있습니다. 그렇기 때문에 배열은 데이터를 효율적으로 저장할 수 있지만, 중간에 데이터를 삽입하거나 삭제하는 것이 어렵다는 단점이 있습니다.

 

Linked List

Linked List 데이터를 포인터로 연결하여 저장하는 동적 자료구조입니다. 그렇기 때문에 Array와 다르게 크기를 정할 필요가 없습니다. 대신 데이터와 다음 데이터의 주소를 가리키는 값(포인터)을 가지고 있는 노드라는 것이 존재합니다. 이러한 구조로 인해 데이터를 삽입하거나 삭제하는 것이 용이합니다. 그러나 Linked List는 데이터 탐색 시 순차적으로 접근 해야하기 때문에 Array에 비해 데이터 접근이 느리다는 단점이 있습니다.

 

 

차이점

StackLIFO(Last-In-First-Out) 방식으로 데이터를 저장하고 제거합니다.

QueueFIFO(First-In-First-Out) 방식으로 데이터를 저장하고 제거합니다.

Array는 연속된 메모리 공간에 데이터를 저장하고 인덱스를 사용하여 데이터에 빠르게 접근합니다.

Linked List는 데이터를 포인터로 연결하여 저장하고 동적자료구조 이기 때문에 데이터를 삽입하거나 삭제하기 쉽습니다.

 

결론

따라서, 이러한 자료구조의 특성에 따라 적합한 상황이 다릅니다. Stack은 함수 호출(Call Stack)이나 브라우저의 방문 기록 등에서 사용되며, Queue는 대기열이나 우선순위 큐(Priority Queue) 등에서 사용됩니다.

Array는 데이터를 효율적으로 저장하며, 데이터에 빠르게 접근이 가능하지만 중간에 데이터를 삽입하거나 삭제하기가 어렵습니다. 반면에 Linked List는 데이터를 삽입하거나 삭제하기 쉽지만, Array에 비해 데이터 접근이 느리다는 특징이 있습 니다.

 
Comments