LL
DATA STRUCTURE
연결 리스트 (Linked List)
각 노드가 다음 노드의 위치만 기억하는 구조를 확인하세요. 배열과 달리 중간에 값을 넣고 빼는 데 다른 값들을 옮길 필요가 없지만, 원하는 노드를 찾으려면 처음부터 하나씩 따라가야 합니다 — 재생목록·즐겨찾기 관리 시나리오로 이 트레이드오프를 직접 체감할 수 있습니다.
HEAD →
재생 버튼을 누르거나 다음 단계 버튼으로 연결 리스트 연산을 시작하세요.
삽입 0회 · 삭제 0회
1 / 1
속도
리스트 내부 노드
순회 중 (비교 대상)
방금 삽입된 노드
값을 찾지 못함
PSEUDOCODE
insertFront(value): head 앞에 새 노드 연결insertBack(value): 끝까지 순회한 뒤 새 노드 연결insertAfter(target, value): target을 찾은 뒤 그 뒤에 연결 cur ← cur.next // 순회하며 값 비교deleteValue(value): target을 찾은 뒤 앞뒤 노드를 직접 연결해 건너뜀찾지 못하면 "값을 찾을 수 없음" 오류 반환
어떻게 동작하나요
연결 리스트는 각 노드가 값과 함께 "다음 노드의 위치"만 저장하는 구조입니다. 배열처럼 값들이 메모리에 연속으로 붙어있지 않아도 되므로, 중간에 노드를 끼워 넣거나 빼도 뒤의 값들을 한 칸씩 옮길 필요가 없습니다. 대신 특정 값을 찾으려면 인덱스로 바로 접근할 수 없고 HEAD부터 하나씩 따라가야 합니다(순회) — 이 순회 비용이 연결 리스트의 가장 큰 특징입니다.
시간·공간 복잡도
- HEAD 앞에 삽입
- O(1)
- 특정 값 찾기 (순회)
- O(n)
- 찾은 뒤 삽입·삭제
- O(1)
- 임의 위치 접근(인덱스)
- 불가 (배열의 장점)
- 공간 복잡도
- O(n)
"검색 후 삽입/삭제" 시나리오에서 순회 스텝(호박색)이 몇 번 발생하는지 세어보면, 값을 찾는 비용이 배열의 인덱스 접근과 어떻게 다른지 체감할 수 있습니다.
다른 자료구조(해시 테이블·힙·이진 탐색 트리)도 이어서 시각화할 예정입니다 — Algorithm 코스로 돌아가기