이번에는  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로 삭제를 한다.

+ Recent posts