本文主要是介绍LeetCode:203.移除链表元素,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
🏝1.问题描述:
🏝2.实现代码:
typedef struct ListNode ListNode;
struct ListNode* removeElements(struct ListNode* head, int val) {if(head==NULL)return head;ListNode *NewHead,*NewTail;ListNode *pcur=head;NewHead=NewTail=(ListNode*)malloc(sizeof(ListNode));while(pcur){if(pcur->val!=val){NewTail->next=pcur;NewTail=NewTail->next;}pcur=pcur->next;}if(NewTail)NewTail->next=NULL;ListNode *oj=NewHead;NewHead=NewHead->next;return NewHead;
}
🏝3.代码分析:
1.先对节点进行判空处理,因为节点数目可能为0,如果head为NULL,那么直接返回head。
2.然后创建一个头节点,一个尾节点,还有一个pcur节点去遍历原来的链表,如果这个节点的val不等于VAl那么就放在新节点里。
3.先动态申请一个节点,这样就可以避免在循环里去判断,最后返回NewHead->next就可以。
这篇关于LeetCode:203.移除链表元素的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!