peek 메소드

nn·2022년 1월 30일
0

연결리스트를 살펴보는 peek이라는 메소드가 있습니다.
peek는 요소의 내용을 알 수 있습니다.

peekFirst

public E peekFirst(){
	if (head == null){
		return null;
     	}
	return head.data;
}

위와 같이 리스트가 비어있는 경우 NullPointerException 을 주의해서 head의 데이터를 읽어오면 됩니다.

peekLast

임시포인터를 이용해 임시포인터를 head로 설정해주고, 하나씩 요소 뒤로 가면서 next가 null인 요소의 data를 읽으면 마지막 요소의 내용을 알 수 있습니다.

이렇게 하면 요소의 개수만큼 모든 요소를 살펴봐야합니다.
결국 시간 복잡도는 O(n)O(n)입니다.

그렇기 때문에 요소의 마지막을 나타내는 tail포인터를 사용하겠습니다.
마지막 요소를 이미 알고 있기때문에 tail.data를 하면 시간 복잡도는 O(1)O(1)이 되게됩니다.

이 방식으로 아래와 같이 구현 할 수 있습니다.

public E peekLast(){
	if (tail == null){
		return null;
     	}
	return tail.data;
}

tail이 null인 경우에는 null을 반환해주면 됩니다.

profile
내가 될 거라고 했잖아

0개의 댓글