删除链表中的元素

Posted Qwells

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了删除链表中的元素相关的知识,希望对你有一定的参考价值。

删除链表中等于给定值val的所有节点。

给出链表 1->2->3->3->4->5->3, 和 val = 3, 你需要返回删除3之后的链表:1->2->4->5

 

迷惑点:陷入没有表头的陷阱,总是想记下删除节点的先驱,导致折腾了很久,其实只要人为加一个表头就简单很多了!!

 

 1 /**
 2  * Definition for singly-linked list.
 3  * struct ListNode {
 4  *     int val;
 5  *     ListNode *next;
 6  *     ListNode(int x) : val(x), next(NULL) {}
 7  * };
 8  */
 9 class Solution {
10 public:
11     /**
12      * @param head a ListNode
13      * @param val an integer
14      * @return a ListNode
15      */
16     ListNode *removeElements(ListNode *head, int val) {
17         // Write your code here
18         //meiyou ya ba jie dian!!!???  自己加一个表头
19         //static int cnt = 0;
20         //kong biao!!就不是问题了。
21         ListNode *temp=new ListNode(0);
22         temp->next= head;
23         head=temp;
24         
25         while(head->next != NULL){
26             if(head->next->val == val){
27                 head->next = head->next->next;
28             }else{
29                 head = head->next;
30             }
31         }
32         return temp->next;
33 
34     }
35 };

 

以上是关于删除链表中的元素的主要内容,如果未能解决你的问题,请参考以下文章

基础结构:链表- 删除排序链表中的重复元素

[LeetCode]83. 删除排序链表中的重复元素

LeetCode 82 删除排序链表中的重复元素II

83. 删除排序链表中的重复元素

083.删除排序链表中的重复元素

算法之小细节(细节~链表的特殊结点~提升优化度)~反转链表删除排序链表中的重复元素