본문 바로가기
CS

#13. Stack과 Queue, Array와 Linked List

by nacjji 2023. 2. 28.
스택(Stack)

Stack은 마지막에 삽입한 데이터가 가장 먼저 꺼내지는 LIFO(Last In First Out) 구조를 가지고 있다.

데이터는 한 쪽 끝에서만 추가되거나 제거된다. 가장 최근에 삽입된 데이터를 가리키는 Top 포인터가 존재한다.

 

Queue

처음에 삽인한 데이터가 가장 먼저 꺼내지는 FIFO(First In First Out) 구조를 가지고 있다.

삽입(Enqueue)은 한 쪽 끝에서 이루어지고 삭제(Dequeue)는 반대쪽 끝에서 이루어진다. 즉, 데이터는 양쪽 끝에서 서로 다른 방향으로 이동된다. 가장 최근에 삽입된 데이터를 가리키는 Rear 포인터와 가장 오래전에 삽입된 데이터를 가리키는 Front 포인터가 존재한다.

 

Array

데이터를 연속된 메모리 공간에 순차적으로 저장하는 자료구조이다. 데이터의 인덱스로 접근할 수 있으며, 빠른 접근과 수정이 가능하다. 그러나 미리 할당된 연속된 메모리 공간에 데이터를 저장하는 특성으로 인해 데이터를 삽입하거나 삭제하기 위해서는 해당 위치에 있는 데이터를 이동해야 하는데, 이 때 생기는 비용이 크기 때문에 데이터의 삽입과 삭제가 어렵고, 메모리 할당에 대한 한계가 존재한다.

 

Linked List

데이터를 노드라는 단위로 구성하여 저장하는 자료구조이다. 각 노드는 데이터와 다음 노드를 가리키는 포인터로 구성된다. 빠른 데이터삽입과 삭제가 가능하며, 메모리 할당에 대한 유연성이 있다. 그러나 데이터 접근과 수정에는 비용이 크며, 노드의 포인터를 위한 추가적인 메모리가 필요하다.

 

'CS' 카테고리의 다른 글

#15. 관계형 데이터베이스(RDB) 와 NoSQL  (0) 2023.03.02
#14. 오버로딩과 오버라이딩  (0) 2023.03.02
#12. 웹서버와 WAS(Web Application Store)  (0) 2023.02.28
#11. TCP와 UDP  (0) 2023.02.27
#10. 트랜잭션  (0) 2023.02.27