「Leetcode」237。リンクリスト内のノードを削除します

タイトル説明

リンクリスト内の特定の(非終了)ノードを削除する関数を記述してください。削除が必要なノードのみが提供されます。
リンクリストがあります– head = [4,5,1,9]、これは次のように表すことができます。
ここに画像の説明を挿入します
例1:

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

例2:

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

説明:

リンクリストには、少なくとも2つのノードが含まれています。
リンクリスト内のすべてのノードの値は一意です。
指定されたノードは終了ノードではなく、リンクリスト内の有効なノードである必要があります。
関数から結果を返さないでください。

言語:C言語
思考分析

  • タイトルで削除する必要のあるノード、つまり、パラメーターを渡すときにヘッドが指定されないことに注意してください。
  • 方向性のある思考に邪魔されないでください。方向性のある思考に従うと、削除する必要のあるノードの前のノードを見つける方法を確実に考えることができます。前のノードのポインタフィールドが、必要な次のノードを指すようにします。削除してからノードを削除します
  • 実際のアイデアは非常に単純で、2行のコードを実行できます。簡単に言えば、削除する必要のあるノードの次のノードがそれ自体をカバーし、次のノードを指すようにします。

コード

/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     struct ListNode *next;
 * };
 */

void deleteNode(struct ListNode* node) {
    node->val=node->next->val;
    node->next=node->next->next;
}

運転結果
ここに画像の説明を挿入します

おすすめ

転載: blog.csdn.net/NanlinW/article/details/104784722