一、问题描述spa
Remove all elements from a linked list of integers that have value val.code
Example
Given: 1 --> 2 --> 6 --> 3 --> 4 --> 5 --> 6, val = 6
Return: 1 --> 2 --> 3 --> 4 --> 5blog
给定一个单链表和一个数值,删除单链表中数据域等于该数值的节点。element
二、问题分析rem
遍历一次链表,找到数据域等于给定数值的链表节点,而后删除之。删除链表的操做,就是被删除链表节点的前驱节点直接指向其后继节点,在C++ 中还要记得 delete被删除的链表。class
为了方便处理head节点,能够人为建立一个新节点,新节点的next指向head。List
特例是,输入为空时,直接返回NULL。遍历
三、代码链表
1 ListNode* removeElements(ListNode* head, int val) { 2 3 if(head == NULL) 4 return NULL; 5 6 ListNode FirstNode(0); 7 FirstNode.next = head; 8 9 ListNode* p = &FirstNode; 10 while(p != NULL) 11 { 12 ListNode* tmp = p->next; 13 if(tmp != NULL && tmp->val == val ) 14 { 15 p->next = tmp->next; 16 delete tmp; 17 } 18 else 19 p= p->next; 20 } 21 22 return FirstNode.next; 23 24 25 }