기타/What I Learned

[TIL] 자료구조 - removeFirst 메소드

가죽방패 2022. 3. 21. 09:45

※ removeFirst 메소드

- 보통 head = head.next를 하면 head가 다음 노드를 가리키고 첫 번째 노드가 제거된다. 하지만 다음과 같은 경계 조건에서 에러가 발생하기 때문에 코드를 추가할 필요가 있다.

 

조건1. 자료 구조가 비어있는 경우

- head가 null을 가리키는 경우인데, head가 head.next를 가리키면 NullPointerException 에러가 발생하게 되는데 이 상황에서는 아무것도 하지않고 null을 반환하면 된다.

 

조건2. 자료 구조에 단 하나의 요소가 들어있는 경우

head 포인터, tail 포인터 모두 null을 가리키게 해야 한다.

 

이를 코드로 구현하면 다음과 같다

public E removefirst() {
	//경계 조건1
    if (head == null)
    	return null;
	E tmp = head.data;
    // 경계 조건 2
    if (head == tail)
    	head = null;
        tail = null;
    // 그 외의 경우
    else
    	head = head.next;
    currentSize--;
}