들어가기 전에
연결 리스트의 마지막 node를 제거하는 removeLast 메소드에 대해 살펴보도록 하겠습니다.
학습 목표
removeLast 메소드를 이해하고 경계 조건을 만족하는지 확인할 수 있습니다.
핵심 단어
- removeLast 메소드
- 연결 리스트
- 경계 조건
removeLast 메소드
마지막 노드를 마지막에서 2번째 노드로 옮겨 연결리스트의 마지막 노드를 제거합니다. 단일 연결 리스트이기 때문에 2번째 노드를 찾으려면 head에서부터 시작해야 합니다.
임시 포인터 current와 previous를 활용하여 마지막에서 2번째 노드를 찾을 수 있습니다. current는 현재 위치를 가리키는 포인터이고 previous는 이전 위치를 가리키는 포인터입니다. current 포인터가 tail과 같으면 previous 포인터는 마지막에서 2번째 노드를 가리키게 됩니다.
이번에도 경계 조건에서 에러가 발생하므로 코드를 추가해야 합니다. 자료 구조가 비어있는 경우와 자료 구조에 단 하나의 요소가 들어있을 때 removeFirst에서와 똑같이 예외 처리를 해주면 됩니다.
코드를 작성하면 다음과 같습니다.
생각해보기
1) currentSize가 (연결 리스트의 크기) - 1이 되는 지점을 찾는 방식으로 마지막에서 2번째 노드를 찾을 수도 있습니다. 이 방법과 임시 포인터를 사용하는 방법 중 어떤 것이 효율적인가요?
나의 생각 : currentSize를 실수로 놓쳤거나 하면 제대로 동작하지 않을 수 있다.
출처 : https://www.boostcourse.org/cs204/lecture/625944?isDesc=false 네이버커넥트재단
'JAVA > 자료구조' 카테고리의 다른 글
연결리스트 테스트 (0) | 2021.10.15 |
---|---|
remove와 find (0) | 2021.10.13 |
removeFirst 메소드 (0) | 2021.10.12 |
addLast 메소드 (0) | 2021.10.03 |
addFirst 메소드 (0) | 2021.10.03 |