刷leetcode-day26

xiaoxiao2025-04-25  4

一、题目:

203.移除链表元素

删除链表中等于给定值 val 的所有节点。

示例:

输入: 1->2->6->3->4->5->6, val = 6 输出: 1->2->3->4->5

二、思路:

引入一前一后两个指针p,q,查找q->val是否为val,是则删除q指向的结点。不是则p,q向后移动继续查找

三、代码(C++):

ListNode* removeElements(ListNode* head, int val) {       ListNode *p=NULL;       ListNode *q=head;       while(q)                            //循环条件为q非空       {           if(q->val==val)              //判断q->val是否为val           {               if(p)                          //查看此时p是否向后移动了               {                   p->next=q->next;                   q=q->next;               }               else                         //若p仍为空指针则使用head指针删除q元素               {                   head=q->next;                   q=q->next;               }           }           else                              //q->val不为val,向后移动p,q指针           {                p=q;                q=q->next;           }       }      return head;     }

转载请注明原文地址: https://www.6miu.com/read-5029087.html

最新回复(0)