您的位置:首页 > 编程语言 > C语言/C++

LeetCode 203. Remove Linked List Elements

2016-08-19 11:34 190 查看
题目链接:https://leetcode.com/problems/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 --> 5

Credits:

Special thanks to @mithmatt for adding this problem and creating all test cases.

Subscribe to see which companies asked this question
* Definition for singly-linked list.
* struct ListNode {
* int val;
* ListNode *next;
* ListNode(int x) : val(x), next(NULL) {}
* };
*/
class Solution {
public:
ListNode* removeElements(ListNode* head, int val) {
if (head == NULL)
return head;
while (head->val == val)
{
head = head->next;
if (head == NULL)
return head;
}
/*以上两部分可以合到一起
while (head!=NULL&&head->val == val)//注意:两项顺序不能倒过来,当&&前面的为假时不会编译后面的!!!
{
head = head->next;
}
if(head==NULL)
return head;
*/
ListNode* p = head->next;
ListNode* q = head;
while (p != NULL)
{
if (p->val == val)
{
q->next = p->next;
p = p->next;
}
else
{
p = p->next;
q = q->next;
}

}
return head;
}
};

注:在vs测试时,ListNode* test=new ListNode(1);调用构造函数进行初始化

                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  leetcode C++ LinkedList