删除链表中的元素
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;
}
问题描述:删除链表中等于给定值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;
}
相关文章推荐
- LintCode—删除链表中的元素(452)
- leetcode83,删除有序链表中的重复元素
- 数据结构实验之链表七:单链表中重复元素的删除
- 数据结构实验之链表七:单链表中重复元素的删除
- 删除链表中节点的元素等于val的节点
- 链表创建、测长、打印、删除元素、插入、排序、逆置
- 【Lintcode】删除链表中的元素
- 删除链表中的重复元素II
- 链表有环判断,快慢指针两种方法/合并链表/删除重复元素/二分递归和while
- 数据结构实验之链表七:单链表中重复元素的删除
- 删除排序链表中的重复元素
- 链表4 ---- 如何一次遍历删除链表的倒数第n个元素
- 关于删除链表元素的操作
- 数据结构实验之链表七:单链表中重复元素的删除
- java 删除linkedlist链表中重复元素
- 数据结构实验之链表七:单链表中重复元素的删除 sdutoj2122
- 顺序表应用1:多余元素删除之移位算法(链表实现)
- SDUT_2015寒假集训_结构体练习_I-单链表中重复元素的删除
- 数据结构实验之链表七:单链表中重复元素的删除
- 删除一个单项链表的最中间的元素,要求时间尽可能短(不能使用两次循环)