一.题目
删除链表中等于给定值val的所有节点。样例:给出链表 1->2->3->3->4->5->3, 和 val = 3, 你需要返回删除3之后的链表:1->2->4->5。
二.解题思路
判断每一个节点的数据是否与所给数据相等,如果相等就将此节点覆盖,如果不相等就向后移一个节点.
三.实现代码
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* ListNode *next;
* ListNode(int x) : val(x), next(NULL) {}
* };
*/
class Solution {
public:
/**
* @param head a ListNode
* @param val an integer
* @return a ListNode
*/
ListNode *removeElements(ListNode *head, int val) {
// Write your code here
ListNode *p=new ListNode(0);
p->next=head;
head=p;
while (head->next != NULL) {
if (head->next->val == val) {
head->next = head->next->next;
}
else {
head = head->next;
}
}
return p->next;
}
};
四.感想
要定义一个头结点用来判断第一个元素是否需要删除和返回链表.