자료구조 시리즈 6편
2025. 4. 21. 15:24ㆍ개발이야기
728x90
반응형
연결 리스트(Linked List) 완전 이해하기
이전 글에서는 큐(Queue)에 대해 알아봤습니다.
이번에는 노드(Node)들이 포인터로 연결된 구조인 연결 리스트(Linked List) 를 자세히 정리해봅니다.
1. 연결 리스트란?
연결 리스트는 각 노드가 데이터와 다음 노드에 대한 포인터를 함께 저장하는 자료구조입니다.
- 동적 크기 조정 가능
- 삽입과 삭제가 빠름 (특히 중간 삽입/삭제)
- 메모리에 연속적으로 저장될 필요가 없음
2. 연결 리스트의 특징
항목 설명
삽입/삭제 | 빠름 (O(1) - 위치만 알면) |
접근 | 느림 (O(n) - 처음부터 순회 필요) |
메모리 사용 | 포인터 공간 추가 필요 |
크기 조정 | 동적 크기 조정 가능 |
3. 연결 리스트 종류
종류 설명
단일 연결 리스트(Singly Linked List) | 한 방향(다음 노드만)으로 연결 |
이중 연결 리스트(Doubly Linked List) | 앞뒤로 양방향 연결 |
원형 연결 리스트(Circular Linked List) | 마지막 노드가 첫 번째 노드를 가리킴 |
4. 단일 연결 리스트 사용 예시 (C# 기준)
C# 내장 LinkedList<T> 클래스를 사용할 수 있습니다.
선언과 초기화
using System.Collections.Generic;
LinkedList<string> list = new LinkedList<string>();
요소 추가
list.AddLast("노드1");
list.AddLast("노드2");
list.AddFirst("노드0");
요소 순회
foreach (var item in list)
{
Console.WriteLine(item);
}
특정 노드 뒤에 삽입
LinkedListNode<string> node = list.Find("노드1");
list.AddAfter(node, "노드1.5");
요소 삭제
list.Remove("노드2");
5. 실생활 예시로 이해하기
- 연결 리스트 = 지하철 칸
- 각 칸(노드)이 다음 칸을 이어서 연결됨
- 중간 칸 추가/제거가 쉽고 빠름
6. 연결 리스트의 활용 사례
사용 예시 설명
메모리 효율적 관리 | 필요할 때마다 노드를 동적 생성 |
Undo/Redo 구현 | 이전 작업으로 이동할 때 양방향 연결 리스트 사용 |
캐시 구현(LRU 캐시) | 최근 사용 데이터를 빠르게 관리 |
이번 글에서는 연결 리스트(Linked List) 의 개념, 종류, C# 코드 사용법을 정리했습니다.
- 배열과 다르게 메모리에 연속 저장되지 않음
- 중간 삽입/삭제가 매우 빠름
- 단일, 이중, 원형 연결 리스트 등 다양한 변형이 존재
728x90
반응형
'개발이야기' 카테고리의 다른 글
자료구조 시리즈 8편 (2) | 2025.04.22 |
---|---|
자료구조 시리즈 7편 (2) | 2025.04.22 |
자료구조 시리즈 5편 (0) | 2025.04.21 |
자료구조 시리즈 4편 (0) | 2025.04.21 |
자료구조 시리즈 3편 (0) | 2025.04.21 |