【データ構造---4】指定された値valに等しいチェーンブロックを削除するすべてのノード
3911 ワード
テーマの説明:
リストから指定値valに等しいすべてのノードを削除します.
例:
入力:1->2->6->3->4->5->6,val=6出力:1->2->3->4->5
1.結果チェーンテーブルを作成し、最後の結果として2を返します.元のチェーンテーブルを巡回して、現在のノードが保存している値と削除したい値が同じでない場合、ノードを結果チェーンテーブルに保存します.結果チェーンテーブルの最後のノードのnextはNULLを指します.
コードの実装:
リストから指定値valに等しいすべてのノードを削除します.
例:
入力:1->2->6->3->4->5->6,val=6出力:1->2->3->4->5
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* struct ListNode *next;
* };
*/
考え方の分析:1.結果チェーンテーブルを作成し、最後の結果として2を返します.元のチェーンテーブルを巡回して、現在のノードが保存している値と削除したい値が同じでない場合、ノードを結果チェーンテーブルに保存します.結果チェーンテーブルの最後のノードのnextはNULLを指します.
コードの実装:
struct ListNode* removeElements(struct ListNode* head, int val)
{
struct ListNode* pCur = head;
struct ListNode* result = NULL;//
struct ListNode* last = NULL;//
while (pCur != NULL)
{
if (pCur->val != val)
{
if (last==NULL)
{
result = last=pCur;
}
else
{
last->next=pCur;
last = pCur;
}
}
pCur = pCur->next;
}
if (last != NULL)
{
last->next = NULL;
}
return result;
}