网站 动态,网站建设招聘要求,linux建网站,南宁工作室注册文章目录 前言1.题目2.分析思路3.参考代码 前言
Leetcode–-移除链表元素 1.题目 2.分析思路
首先要创建一个新的链表#xff0c;在定义三个指针#xff0c;newHead#xff0c;newTail和pcur#xff0c;分别代表新链表头#xff0c;新链表尾以及用于遍历原链表。 其次是… 文章目录 前言1.题目2.分析思路3.参考代码 前言
Leetcode–-移除链表元素 1.题目 2.分析思路
首先要创建一个新的链表在定义三个指针newHeadnewTail和pcur分别代表新链表头新链表尾以及用于遍历原链表。 其次是如果pcur-val!val那么newTail下一个结点指向pcur(newTail-nextpcur)然后newTail往后移动(newTailnewTail-next)pcur也要往后一动如果pcur-valval那么只需要pcur往后移动直到遍历完原链表。 还有一个是在遍历完以后要将newTail的指向的指针设置为NULL 最后便要考虑特殊情况例如示例2中head[]是一个空链表那么在最开始便要判断head是否是空链表。 3.参考代码
typedef struct ListNode ListNode;
struct ListNode* removeElements(struct ListNode* head, int val) {if(headNULL)return head;ListNode* pcurhead;ListNode* newHeadNULL;ListNode*newTailNULL;while(pcur){//如果pcur-val!val,那么节点要尾插到新链表中if(pcur-val!val){//判断新链表是否为空if(newHeadNULL){newHeadnewTailpcur;}else{newTail-nextpcur;newTailnewTail-next;}}pcurpcur-next;}if(newTail)newTail-nextNULL;return newHead;
}完