タイトル説明:
単一リンクリストのヘッドポインタと削除するノードの値を指定して、ノードを削除する関数を定義します。
削除されたリンクリストのヘッドノードを返します。
例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;
}
};