删除链表中等于给定值 val 的所有节点。
示例:
输入: 1->2->6->3->4->5->6, val = 6
输出: 1->2->3->4->5
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/remove-linked-list-elements
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* struct ListNode *next;
* };
*/
struct ListNode* removeElements(struct ListNode* head, int val){
struct ListNode* new_head=NULL;
struct ListNode* tmp=NULL;
while(head&&head->val==val)
{
tmp=head;
head=head->next;
free(tmp);
}
new_head=head;
if(new_head)
{
while(head->next)
{
if(head->next->val==val)
{
tmp=head->next;
head->next=tmp->next;
free(tmp);
}
else
{
head=head->next;
}
}
}
return new_head;
}
执行用时 :16 ms, 在所有 C 提交中击败了97.49% 的用户
内存消耗 :9.3 MB, 在所有 C 提交中击败了90.44%的用户