- 이중 연결 리스트는 각 요소가 이전 요소와 다음 요소를 모두 참조하여 양방향 탐색 및 작업이 가능하며, 비상 연락망처럼 각 사람이 앞뒤 사람의 연락처를 아는 것에 비유됩니다. ↔️
- 단일 연결 리스트가 다음 요소로의 일방적인 참조만 갖는 것과 달리, 이중 연결 리스트는 이전 요소와 다음 요소 모두에 대한 쌍방향 참조를 가집니다. 🔄
- 리스트의 시작(헤드)과 끝(테일) 요소에 직접 접근할 수 있어, 맨 앞이나 맨 뒤에서의 요소 추가 및 삭제 작업이 O(1)의 시간 복잡도로 매우 효율적입니다. 🚀
- 특정 위치에서의 삽입, 삭제, 탐색 작업은 O(N)의 시간 복잡도를 가지지만, 목표 위치가 리스트의 앞쪽인지 뒤쪽인지에 따라 헤드 또는 테일에서 시작하여 탐색 효율을 높일 수 있습니다. ⏱️
- 정방향(헤드에서 테일)뿐만 아니라 역방향(테일에서 헤드)으로도 순회, 탐색, 삽입, 삭제 등 모든 기본 리스트 오퍼레이션이 가능합니다. 🗺️
- 코드 구현 시
Node 클래스에 prev 속성을 추가하고, DoublyLinkedList 클래스에 head와 tail 속성을 유지하며, 모든 메소드에서 prev와 next 참조를 적절히 업데이트하는 것이 핵심입니다. 💻
- 이중 연결 리스트는 스택(Stack)이나 큐(Queue)와 같은 다른 자료구조를 구현하는 데 매우 유용하게 활용될 수 있는 기반 자료구조입니다. 🛠️
데브허브 | DEVHUB | 자료구조 - 이중 연결 리스트