LeetCode|203. Remove Linked List Elements(删除链表中的值等于val的所有的节点)

题目描述:

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

示例:

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

解题思路:

声明一个指针指向第一个节点,利用这个指针来判断值是否相等,相等的话就删除,不相等的话就next,最后返回第一个节点的地址。

代码如下:

    /**
     * Definition for singly-linked list.
     * struct ListNode {
     *     int val;
     *     ListNode *next;
     *     ListNode(int x) : val(x), next(NULL) {}
     * };
     */
    class Solution {
    public:
        ListNode* removeElements(ListNode* head, int val) {
            ListNode* p=new ListNode(0);//声明一个节点空间
            p->next=head;//指向第一个节点
            ListNode* i=p;
     
            if(head==NULL)
            {
                return NULL;
            }
            else      
            {
                while(i->next!=NULL)    //如果节点不为空      
                {
                    if(i->next->val==val)
                    {
                        ListNode* ptemp= i->next;//声明一个指针指向第一个节点
                        i->next=i->next->next;//将等于val的节点去掉
                        ptemp->next=NULL;
     
                        delete ptemp;
                    }  
                    else    
                    {
                        i=i->next;
     
                    }
     
                  
     
                }
     
            }
            return p->next;//返回第一个节点
        }
    };
---------------------
作者:零钱币
来源:CSDN
原文:https://blog.csdn.net/linqianbi/article/details/81233290
版权声明:本文为博主原创文章,转载请附上博文链接!

posted @ 2019-07-27 19:10  天涯海角路  阅读(84)  评论(0)    收藏  举报