연결리스트를 살펴보는 peek이라는 메소드가 있습니다.
peek는 요소의 내용을 알 수 있습니다.
public E peekFirst(){
if (head == null){
return null;
}
return head.data;
}
위와 같이 리스트가 비어있는 경우 NullPointerException
을 주의해서 head의 데이터를 읽어오면 됩니다.
임시포인터를 이용해 임시포인터를 head로 설정해주고, 하나씩 요소 뒤로 가면서 next가 null인 요소의 data를 읽으면 마지막 요소의 내용을 알 수 있습니다.
이렇게 하면 요소의 개수만큼 모든 요소를 살펴봐야합니다.
결국 시간 복잡도는 입니다.
그렇기 때문에 요소의 마지막을 나타내는 tail포인터를 사용하겠습니다.
마지막 요소를 이미 알고 있기때문에 tail.data를 하면 시간 복잡도는 이 되게됩니다.
이 방식으로 아래와 같이 구현 할 수 있습니다.
public E peekLast(){
if (tail == null){
return null;
}
return tail.data;
}
tail이 null인 경우에는 null을 반환해주면 됩니다.