美文网首页
030-从单链表尾部算删除第k个节点

030-从单链表尾部算删除第k个节点

作者: Woodlouse | 来源:发表于2020-06-06 22:06 被阅读0次

描述

在单链表中,删除从尾部算起的第k个节点。

输入:

​ 1->2->3->4->5,k=2

输出:

​ 1->2->3->5

补充:

  • k的取值永远是合法的;
  • 在一次循环中完成

分析

设置两个指针p、q,让q先走k步,然后p、q一起走,直到q走到尾节点,删除p->next即可。

实现

ListNode *removeKthNodeFromTheEndoflist(ListNode *head, int k)
{
    ListNode dummy(INT_MIN);
    dummy.next = head;
    ListNode *p = &dummy;
    ListNode *q = &dummy;
    for(int i=0; i<k; i++) {
        q = q->next;
    }
    
    //共同走
    while (q->next) {
        p = p->next;
        q = q->next;
    }
    
    // 删除p->next
    ListNode *temp = p->next;
    p->next = p->next->next;
    delete temp;
    
    return dummy.next;
}

时间复杂度为O(n),空间复杂度为O(1)

相关文章

  • 030-从单链表尾部算删除第k个节点

    描述 在单链表中,删除从尾部算起的第k个节点。 输入: ​ 1->2->3->4->5,k=2 输出: ​ ...

  • 单向链表算法

    单向链表 反转单向链表 单链表查找倒数第k个节点 单链表递归倒序打印 单链表排序 单链表删除重复节点

  • 链表面试题

    1.链表反转 2.倒序输出链表 3.输出链表中倒数第 k 个节点,k从1开始计数。 4.删除单链表指定节点 5.查...

  • 2018-07-26

    合并有顺序的数组 打印两个有序链表的公共部分 在单链表和双链表中删除倒数第k个节点 单链表 双链表 删除链表的中间...

  • 在单链表和双链表中删除倒数第k个节点

    【题目】分别实现两个函数,一个可以删除单链表中倒数第k个节点,另一个可以删除双链表中倒数第k个节点。【解析】先来分...

  • Python--单向链表

    单链表python实现 节点实现 单链表操作 头部插入 尾部添加 在index位置插入 删除结点

  • 单链表常见面试题

    统计单链表中有效节点的个数 查找单链表中的倒数第k个节点(Sina) 单链表的反转(Tencent) 从尾到头打印...

  • 链表问题集锦

    1.单链表的初始化,输出以及插入删除的基本操作 2.在O(1)时间删除链表节点 3.反转单链表 4.求链表倒数第k...

  • LinkedList

    1. 打印两个有序链表的公共部分 节点一定要注意null 2.在单链表和双链表中删除倒数第k个节点 time=n,...

  • 链表

    链表基本操作 从尾到头打印链表 删除链表的节点 链表中倒数第K个节点 反转链表 合并两个有序链表 两个链表的第一个...

网友评论

      本文标题:030-从单链表尾部算删除第k个节点

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