LintCode: Remove Linked List Elements

简介:

C++

复制代码
 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         // Find the first non-Val node
19         while ( head != NULL && head->val == val ) {
20             head = head->next;
21         }
22         // If the head is NULL, return
23         if ( head == NULL ) {
24             return head;
25         }
26         // Remove the left val nodes
27         ListNode *pre = head;
28         ListNode *cur = pre->next;
29         while ( cur != NULL ) {
30             if ( cur->val != val ) {
31                 pre->next = cur;
32                 pre = pre->next;
33             }
34             cur = cur->next;
35         }
36         // In case of the tail has val node
37         pre->next = cur;
38         // return
39         return head;
40     }
41 };
复制代码

 


本文转自ZH奶酪博客园博客,原文链接:http://www.cnblogs.com/CheeseZH/p/4998696.html,如需转载请自行联系原作者

相关文章
LeetCode 203. Remove Linked List Elements
删除链表中等于给定值 val 的所有节点。
74 0
LeetCode 203. Remove Linked List Elements
LeetCode 92. Reverse Linked List II
给定一个链表,反转指定的子序列.
80 0
LeetCode 92. Reverse Linked List II
|
算法
[LeetCode]--203. Remove Linked List Elements
Remove all elements from a linked list of integers that have value val. Example Given: 1 –> 2 –> 6 –> 3 –> 4 –> 5 –> 6, val = 6 Return: 1 –> 2 –> 3 –> 4 –>
1046 1
|
数据建模
1097. Deduplication on a Linked List (25)
//思路:第一步用node将链表链接起来 存在v中 用ma判断是否重复 重复则pop 并push到re中 #include #include #include #include #include using na...
1034 0
1074. Reversing Linked List (25)
#include #include #include using namespace std; struct node { int address, data, next; }; const int NUM...
958 0