203. 移除链表元素
方法一:
struct ListNode* removeElements(struct ListNode* head, int val)
{
typedef struct ListNode ListNode;
ListNode* shead=(ListNode*)malloc(sizeof(ListNode));
shead->next=head;
ListNode* cur=shead;
while(cur->next != NULL)
{
if(cur->next->val==val)
{
ListNode *tmp = cur->next;
cur->next=tmp->next;
free(tmp);
}
else cur=cur->next;
}
head=shead->next;
free(shead);
return head;
}
方法二:普通法
struct ListNode* removeElements(struct ListNode* head, int val)
{
struct ListNode* tmp;
while(head && head->val==val)
{
tmp=head;
head=head->next;
free(tmp);
}
struct ListNode* cur=head;
while(cur && (tmp=cur->next))
{
if(tmp->val==val)
{
cur->next=tmp->next;
free(tmp);
}
else cur=cur->next;
}
return head;
}