剣はオファーシリーズを指します剣はオファー18を指します:リンクリストのノードを削除します

タイトル説明:

単一リンクリストのヘッドポインタと削除するノードの値を指定して、ノードを削除する関数を定義します。

削除されたリンクリストのヘッドノードを返します。

例1:

入力:head = [4,5,1,9]、val = 5
出力:[4,1,9]
説明:リンクリストに値5の2番目のノードがある場合、関数を呼び出した後、リンクリストは次のようになります。 4-> 1-> 9になります。

例2:

入力:head = [4,5,1,9]、val = 1
出力:[4,5,9]
説明:リンクリストの値が1である3番目のノードを指定し、関数を呼び出した後、リンクリスト4-> 5-> 9である必要があります。

問題解決のアイデア:

この質問は、リンクリストを削除し、リンクリストをトラバースしてから、削除する必要のあるノードに遭遇するだけです。次を使用するだけです。

ノードの削除が最初の問題である場合は注意が必要です

コード:

/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     ListNode *next;
 *     ListNode(int x) : val(x), next(NULL) {}
 * };
 */
class Solution {
public:
    ListNode* deleteNode(ListNode* head, int val) {
        ListNode*head1=head;
        ListNode* m=NULL;
        if(head->val == val)
        {
            return head->next;
        }

        while(head1)
        {
            m=head1->next;
            if(m->val == val)
            {
                head1->next = m->next;
                break;
            }
            head1=head1->next;
        }
        return head;
    }
};

 

おすすめ

転載: blog.csdn.net/qq_46423166/article/details/110819215