이번에는 T 타입 데이터와 같은 노드노드를
삭제하는 기능을 하는 메서드를 구현해보았다.
하지만 그 노드를 찾았다고 하더라도
그 전 노드의 주소를 알 수 없기때문에
문제가 있었다.
삭제할 노드가 아니라 직전 노드의 주소가 필요하다.
public T remove(T item) {
Node<T> p = head;
Node<T> q = null;
while(p != null && !p.data.equals(item)) {
q = p;
p=p.next;
}
if(p==null)
return null;
if(q==null)
return removeFirst();
else
return removeAfter(q);
}
그 문제를 해결한 코드이다.
항상 그 전 노드를 가리키는 참조변수를 만들어서
처리하는 코드이다.
만일 p가 null이라면 찾는 값이 존재하지 않기때문에
null을 리턴하고
첫번째 노드부터 값을 찾은 경우라면?
q가 null이다.
그때는 removeFirst로 삭제를 한다.
그렇지않다면 removeAfter로 삭제를 한다.
'알고리즘 with 자바 > 자료구조' 카테고리의 다른 글
| 연결리스트와 Iterator 2 (0) | 2021.07.20 |
|---|---|
| 연결리스트와 Iterator 1 (0) | 2021.07.19 |
| 연결리스트의 개념과 기본연산 4 (0) | 2021.07.15 |
| 연결리스트의 개념과 기본연산 3 (0) | 2021.07.15 |
| 연결리스트의 개념과 기본연산 2 (0) | 2021.07.14 |