题目描述:给定一个整数val,删除链表中值为val的结点
解题思路:需要注意的是头结点和尾节点需要删除的情况,新建一个指针p指向头结点,从新建的指针开始,比较当前结点的next是否与val相等,这样可以避免最后一个节点要删除时出现问题。
C++实现如下:
/**
* 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 NULL;
ListNode* p = new ListNode(0);
p->next = head;
ListNode* q = p;
while(q&&q->next)
{
if(q->next->val == val)
q->next = q->next->next;
else
{
q = q->next;
}
}
return p->next;
}
};