2017-05-08 8 views
-1

何をしようとしているのは、値の後のノードが特定の番号であるかどうかをチェックしていれば、previouesノードを削除します。 次のようなもの:C++単一リンクリスト内の別のノードを削除する

1,2,3,4,5,4 次のノード番号が4の場合は、このノードを削除します。 1,2,3,4,5,4 - > 1,2,4,4

node* temp = head; 
while (head != NULL) { 
    if (head->next->number == 4) { 
     delete temp; 
    } 
    head = head->next; 
} 

コンパイラがクラッシュしたとして、この瞬間に苦労。

+1

をあなたが取得している何のエラー含める必要があります。 – Carcigenicate

+0

プロセスは255の@CodeBlocksを返します。 – Brock

+1

FYIと同じように、 'head!= NULL'をチェックしてから' head-> next-> number'を呼び出すので、おそらくコンパイラはクラッシュしています。だから 'head'はNULLではないかもしれませんが、明示的にチェックしない限り、' head-> next!= NULL'を保証することはできません。 – LeoVannini

答えて

1

あなたはそれを進める前に、あなたは頭を削除します。

node *temp = NULL; 
while (head->next != NULL) { 
    if (head->next->number == 4) { 
     temp = head; 
    } 
    if (temp == NULL){ 
     head = head->next; 
    } 
    else{ 
     head = head->next->next; 
     delete temp; 
     temp= NULL: 
    } 
} 
関連する問題