データ構造の削除チェーン表に含まれるすべてのノード
5197 ワード
方法1:チェーンの各ノードを巡回して、ノードの値を判断し、valであれば、節点の問題を削除する:ノードを削除するには、このノードの前駆ノードが必要で、先頭ノードは前駆体がなく、特殊な処理が必要である.
Node removeAll(Node head,int value){
if (head == null){
return null;
}
Node prev = head;
Node cur = head.next;
while(cur!=null){
if (cur.value == value){
prev.next = cur.next;//
}else {
prev = cur;
}
cur = cur.next;
}
if (head.value == value){
return head.next;//
}else
return head;
}
方法2:チェーンを巡回して、各ノードの値とvalueを比較して、同じではないなら、このノードを新しいチェーンブロック(最後の挿入)に移動します.Node removeAll2(Node head,int value){
Node newHead = new Node();
Node newLast = newHead;
Node cur = head;
while(cur != null){
//cur
if (cur.value != value){
//
newLast.next = cur;
newLast = cur;
}
cur = cur.next;
}
newLast.next = null;
//
return newHead.next;
}