들어가기 전에
연결 리스트의 특정 node를 살펴보는 peek 메소드에 대해 알아보도록 하겠습니다.
학습 목표
peek 메소드를 이해하고 peekFirst와 peekLast 메소드를 만드는 방법을 이해할 수 있습니다.
핵심 단어
- peek 메소드
- peekFirst, peekLast
peek 메소드
peek 메소드는 하나의 요소를 살펴보기 위해 쓰는 메소드입니다. 추가, 제거하는 것이 아니라 그 요소의 내용을 읽는 함수입니다.
peekFirst는 아래와 같이 구현할 수 있습니다. 리스트가 비어있으면 NullPointerException 에러가 발생하기 때문에 따로 처리해줍니다.
같은 방식으로 하여, peekLast는 아래와 같이 구현할 수 있습니다. 임시 포인터를 활용하여 시간 복잡도가 O(n)O(n) 인 peekLast 함수를 만들 수도 있습니다.
생각해보기
1) tmp가 임시 포인터라 할 때, while(tmp.next != null)과 while(tmp != null)의 차이점은 무엇인가요?
나의 생각:
1) tmp.next !=null은 마지막 노드를 가리키고 (removeLast, peekLast 메소드)
tmp!=null은 마지막을 지나쳐서 가리키게 된다. (contains, remove 메소드)
출처 : https://www.boostcourse.org/cs204/lecture/625946?isDesc=false 네이버커넥트재단