JAVA/자료구조

이중 연결 리스트

도전하는일반인 2021. 10. 15. 07:15

들어가기 전에

단일 연결 리스트에 previous 포인터를 추가한 이중 연결 리스트에 대해 살펴보도록 하겠습니다.

 

학습 목표

이중 연결 리스트를 이해하고 장단점을 설명할 수 있습니다.

 

핵심 단어

  • 이중 연결 리스트
  • 시간 복잡도

이중 연결 리스트

 

 

 

이중 연결 리스트는 단일 연결 리스트에 바로 전의 노드를 가리키는 previous 포인터를 추가한 연결 리스트입니다.

 

removeLast 메소드를 사용할 때, 단일 연결 리스트는 tail 포인터가 있더라도  O(n)O(n) 의 시간 복잡도로 모든 노드를 한 번씩 거쳐야 한다는 단점이 있었습니다. 하지만 이중 연결 리스트는 tail 포인터가 가리키는 노드에서 previous 포인터가 가리키는 노드를 찾으면 되기 때문에 시간 복잡도가  O(1)O(1) 이 됩니다.

 

이중 연결 리스트의 단점은 previous 포인터가 추가되기 때문에 노드를 추가하는 과정이 더 복잡해진다는 것입니다.

 


 

생각해보기


1) 이중 연결 리스트의 장단점은 무엇인가요?

 

나의 생각 : 

장점) removeLast()를 할 때 tail포인터가 가리키는 노드에서 previous포인터가 가리키는 노드를 찾으면 되기 때문에 시간 복잡도가 상수가 된다.

단점) previous 포인터가 추가되기 때문에 노드를 추가할 때 과정이 복잡해진다.

 

출처 : https://www.boostcourse.org/cs204/lecture/625949?isDesc=false 네이버커넥트재단