美文网首页
链表一个小小的练习

链表一个小小的练习

作者: 熊白白 | 来源:发表于2017-07-11 20:33 被阅读9次

    删除链表中某一个指定值的结点。所有结点的值都不同。

    //返回值:因为可能更改表头指针,所以返回指针
        ListNode* removeNode(ListNode* pHead, int delVal) {
            // 对于表头是空的情况,做特殊处理
            ListNode* p=pHead;
            if(p==nullptr)
                return nullptr;
    //对于表头结点是待删结点的情况做处理
            if(p->val==delVal){
                ListNode* newp=p->next;
                delete p;
                return newp;
            }
    //因为删除结点需要修改前驱结点,所以遍历的,其实是前驱结点
    //前驱结点遍历至尾结点时,不做处理结束循环
            while(p->next!=nullptr){
                if(p->next->val==delVal){
                    ListNode* delp=p->next;
                    p->next=delp->next;
                    delete delp;
                    return pHead;
                }else
                    p=p->next;
            }
            return pHead;
        }
    

    相关文章

      网友评论

          本文标题:链表一个小小的练习

          本文链接:https://www.haomeiwen.com/subject/ctamhxtx.html