题目描述
思路
创建新链表,将原链表中的值不为val的结点尾插到新链表中
画图解释
定义一个指针pcur去遍历原链表,创建一个空链表,newHead和newTail在初始情况指向空。
pcur遍历原链表不为val的结点尾插到新链表中
完整代码
/**
* 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)
newTail->next=NULL;
return newhead;
}