原地址:http://www.lintcode.com/zh-cn/problem/remove-linked-list-elements/
/**
* 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
//排除链表为NULL情况
if(head == NULL){
return head;
}
//先判断头节点是否为需要删除的
while(head->val == val){
head = head->next;
if(head == NULL){
return NULL;
}
}
ListNode *pstTemp = head;
while(pstTemp->next != NULL){
//节点是待删除的
if(pstTemp->next->val == val){
pstTemp->next = pstTemp->next->next;
}else {
//更新
pstTemp = pstTemp->next;
}
}
return head;
}
private:
ListNode HeadNode;
};