Web

자료구조 : Linked List

필립 2024. 7. 19. 02:30

오늘은

프로젝트에서 사용하기 위해 자료구조를 공부하며 링크드리스트에 대해 공부한 내용을 

간단히 적어보겠습니다. 

 

링크드 리스트(Linked List)는 데이터 구조의 한 유형으로, 각 요소(노드)가 데이터와 다음 요소를 가리키는 포인터를 포함하는 방식으로 구성됩니다. 이는 배열과 달리 요소들이 물리적으로 연속되어 있지 않으며, 논리적으로 연결된 구조를 갖습니다. 링크드 리스트는 데이터의 동적 할당 및 삽입, 삭제가 빈번히 일어나는 상황에서 유용합니다.

 

1. 링크드 리스트의 구성 요소

1.1. 노드(Node): 링크드 리스트의 기본 구성 요소. 각 노드는 다음과 같은 두 부분으로 이루어져 있습니다.
   - 데이터(Data): 노드가 저장하는 값
   - 포인터(Next): 다음 노드를 가리키는 참조(주소)
1.2. 헤드(Head): 리스트의 첫 번째 노드를 가리키는 포인터입니다. 리스트의 시작점을 나타냅니다.
1.3. 테일(Tail): 리스트의 마지막 노드로, 이 노드의 다음 포인터는 NULL을 가리킵니다.


2. 링크드 리스트의 유형

2.1. 단일 링크드 리스트(Singly Linked List): 각 노드는 오직 다음 노드를 가리키는 하나의 포인터를 가집니다.


2.2. 이중 링크드 리스트(Doubly Linked List): 각 노드는 다음 노드와 이전 노드를 가리키는 두 개의 포인터를 가집니다.



2.3. 원형 링크드 리스트(Circular Linked List): 마지막 노드가 첫 번째 노드를 가리켜 리스트가 원형으로 연결됩니다.


3. 링크드 리스트의 장점과 단점

장점:
- 동적 크기: 배열과 달리 링크드 리스트는 동적으로 크기를 조절할 수 있습니다.
- 효율적인 삽입/삭제: 노드의 삽입과 삭제가 리스트의 중간에서 효율적으로 이루어질 수 있습니다.

단점:
- 추가 메모리 사용: 각 노드가 데이터 외에 포인터를 저장해야 하므로 추가적인 메모리 공간이 필요합니다.
- 느린 접근 속도: 특정 위치의 노드를 접근하기 위해 처음부터 순차적으로 접근해야 하므로 시간이 더 걸립니다. (Full Scan)

 

'Web' 카테고리의 다른 글

NestJS : 순환 참조  (0) 2024.08.12
재귀함수와 반복문  (1) 2024.08.06
자료 구조 : 해시 테이블  (0) 2024.07.17
Trello - member 테이블을 통하는 인증, 인가  (0) 2024.07.16
공연 예매 프로젝트 - 후기  (0) 2024.07.11