问题描述:
Remove all elements from a linked list of integers that have value val.
Example:
Input: 1->2->6->3->4->5->6, val = 6 Output: 1->2->3->4->5
简述:
删除链表中特定值的节点。
解题思路:
很传统的一道题。遍历链表删除特定值节点即可,注意保存当前节点的父节点。加一个空头结点可以方便操作。
ListNode* removeElements(ListNode* head, int val) {
ListNode *h = new ListNode(0), *p, *q;
q = h->next = head;
p = h;
while(p && q) {
if(q->val == val) {
p->next = q->next;
delete q;
} else {
p = p->next;
}
q = p->next;
}
return h->next;
}