데브허브 | DEVHUB | 자료구조 - 단일 연결 리스트
- 단일 연결 리스트는 배열과 달리 메모리상에서 연속되지 않은 공간에 데이터를 저장하며, 각 요소(노드)는 자신의 데이터와 다음 요소의 주소값을 가집니다. 🔗
- 배열은 특정 인덱스 접근 및 수정이 빠르지만, 연결 리스트는 첫 요소부터 순차적으로 탐색해야 하므로 특정 위치 접근(O(N))이 느립니다. 🐢
- 연결 리스트는 요소 추가 및 삭제 시 다른 요소들을 밀거나 당길 필요 없이 포인터만 변경하면 되므로, 해당 위치를 찾은 후의 실제 삽입/삭제 작업은 배열보다 빠릅니다 (O(1)). ✂️
- 특히 리스트의 맨 앞에 요소를 추가하거나 제거하는 작업은 헤드에 직접 접근하므로 시간 복잡도가 O(1)로 매우 효율적입니다. 🚀
- 리스트의 중간이나 끝에 요소를 추가/삭제하거나 특정 값을 검색하는 작업은 해당 위치까지 순회해야 하므로 시간 복잡도가 O(N)입니다. 🚶♀️
- 연결 리스트 구현은
Node 클래스(데이터와 다음 노드 주소 포함)와 SinglyLinkedList 클래스(리스트의 시작점인 head 관리)로 구성됩니다. 🧩
insert_at_head 메소드는 새 노드를 만들고 기존 헤드를 가리키게 한 뒤 새 노드를 헤드로 설정하여 O(1)의 효율을 가집니다. ➡️
insert_at_position 메소드는 지정된 위치까지 순회한 후 새 노드를 삽입하며, delete_by_value 메소드는 이전 노드와 현재 노드를 추적하며 값을 찾아 삭제합니다. 📍
search 및 traverse 메소드는 리스트의 모든 요소를 순회하며 특정 값을 찾거나 각 요소에 대한 작업을 수행하므로 O(N)의 시간 복잡도를 가집니다. 🔍
- 연결 리스트는 비상 연락망처럼 첫 사람만 알면 다음 사람을 통해 전체에 접근할 수 있는 구조로, 유연한 데이터 관리에 적합합니다. 📞