/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* struct ListNode *next;
* };
*/
typedef struct ListNode ListNode;
struct ListNode* removeElements(struct ListNode* head, int val) {
//创建一个空链表
ListNode*newHead,*newTail;
newHead=newTail=NULL;
//遍历原链表
ListNode* pcur = head;
while(pcur)
{
//找值不为val的节点,尾插到新链表中
if(pcur->val!=val)
{
//链表为空
if(newHead==NULL)
{
newHead=newTail=pcur;
}
else
{
newTail->next=pcur;
newTail=newTail->next;
}
}
pcur=pcur->next;
}
if(newTail)//有可能head链表原本就是空的
newTail->next=NULL;
return newHead;
}