欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

删除链表中的第n个节点

程序员文章站 2022-07-12 11:55:31
...
 ListNode* dummyNode = new ListNode(0,head);
        ListNode* left = dummyNode;//左指针指向虚拟节点
        ListNode* right = head;//右指针指向头部节点
        for (int i = 0; i < n; i++)right = right->next;//右指针先移动n个位置
        while (right)//当右指针不为空时
        {
            right = right->next;
            left = left->next;//左右指针同时移动直到右指针指向NULL
        }
        left->next = left->next->next;//删除
        ListNode* ans = dummyNode->next;
        delete dummyNode;//释放内存

使用双指针法解决这个问题
首先,定义两个指针,左指针指向模拟节点,右指针指向头部节点
一开始让右指针移动n个单位
然后再让它们一起移动直到右指针指向NULL
通过改变左指针的next来实现删除的目的,再创建一个ans用来保存头部,之后再释放dummyNode,避免内存泄漏

相关标签: 笔记