leetcode 203. Remove Linked List Elements(accepted) C language

xiaoxiao2021-02-28  52

/** * Definition for singly-linked list. * struct ListNode { * int val; * struct ListNode *next; * }; */ struct ListNode* removeElements(struct ListNode* head, int val) { struct ListNode *flag, *t; while((head != NULL) && (head->val == val))//头结点的值若命中则会改变链表起点,因而先单独处理 { t = head; head = t->next; free(t) ; } if(head == NULL) return 0; //此时链表不为空且head->val != val; flag = head;//设置浮动指针 //遍历链表,如果命中就进行节点删除操作,这里应注意,如果free(t),则flag保持不动,否则会跳过一个结点(这里判断用的是flag->next->val)  while(flag->next != NULL) { if(flag->next->val == val) { t = flag->next; flag->next = t->next; free(t); continue; } flag = flag->next; } return head; }
转载请注明原文地址: https://www.6miu.com/read-53751.html

最新回复(0)