您的位置:首页 > 其它

删除链表中的元素

2017-07-10 10:22 183 查看
/*

问题描述:删除链表中等于给定值val的所有节点。

来源:LintCode

作者:syt
日期:2017-7-10

思路:使用两个指针,首先注意head是否为val值,注意判断指针是否为NULL的顺序和连续几个val值出现的情况

*/

#include <iostream>
#include <stack>
using namespace std;

template <typename T>
class ListNode{
public:
T val;
ListNode<T>* next;

ListNode<T>(const T& val, ListNode<T>* next = NULL)
{
this->val = val;
this->next = next;
}
};
template <typename T>
ListNode<T>* removeElements(ListNode<T>* head, int val)
{
while (head->val == val && head != NULL)
{
head = head->next;
}
ListNode<int>* p = head;
ListNode<int>* q = NULL;
while (p != NULL)
{
q = p;
q = q->next;
while (q != NULL && q->val == val)
{
q = q->next;
}
p->next = q;
p = p->next;
}
return head;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: