链表问题 在单链表和双链表中删除倒数第K个节点
2017-10-30 19:36
337 查看
【题目】
分别实现两个函数,一个可以删除单链表中倒数第K个节点,另一个可以删除双链表中倒数第K个节点。
【要求】
如果链表长度为N,时间复杂度达到(O(N)),额外控件复杂度达到O(1);
单链表
双链表
分别实现两个函数,一个可以删除单链表中倒数第K个节点,另一个可以删除双链表中倒数第K个节点。
【要求】
如果链表长度为N,时间复杂度达到(O(N)),额外控件复杂度达到O(1);
单链表
package com.angel.num2; class Node{ int value; Node next; public Node(int value){ this.value = value; } } public class DelNode { public Node removeLastKthNode(Node head,int lastKth){ if (head == null || lastKth < 1) return head; Node cur = head; while (cur != null){ lastKth--; cur = cur.next; } if (lastKth == 0) head=head.next; if (lastKth < 0){ cur = head; while(++lastKth != 0) cur = cur.next; cur.next = cur.next.next; } return head; } }
双链表
package com.angel.num2; class DoubleNode{ int value; DoubleNode last; DoubleNode next; public DoubleNode(int value){ this.value = value; } } public class DoubleDel { public DoubleNode removeLastKthNode(DoubleNode head, int lastKth){ if (head == null || lastKth < 1) return head; DoubleNode cur = head; while (cur != null){ lastKth--; cur = cur.next; } if (lastKth == 0){ head = head.next; head.last=null; } if (lastKth < 0){ while (++lastKth != 0) cur = cur.next; DoubleNode newNext = cur.next.next; cur.next = newNext; if (newNext != null) newNext.last = cur; } return head; } }
相关文章推荐
- 链表问题---在单链表和双链表中删除倒数第K个节点
- 链表问题——在单链表和双链表中删除倒数第K个节点
- 链表问题(1)-- 在单链表和双链表中删除倒数第K个节点
- 左程云_算法与数据结构 — 链表问题 — 02在单链表和双链表中删除倒数第K个节点
- [链表]-在单链表和双链表中删除倒数第K个节点
- (算法)输出单链表的倒数第k个节点,删除特点的节点和从链表尾一次输出节点值
- 链表之删除单链表倒数第K个节点
- 在单链表和双链表中删除倒数第k个节点
- 数据结构 在单链表和双链表中删除倒数第K个节点
- 算法优解(5)-删除单链表的倒数第k个节点
- 单链表的增删查 逆置 倒数第k个节点等问题
- (转)问题:假设一个没有头指针的单链表。一个指针指向此单链表中间的一个节点(既不是第一个,也不是最后一个节点),请将该节点从单链表中删除。
- JAVA实现链表中倒数第K个节点问题(《剑指offer》)(考虑问题要全面)
- 删除链表的倒数第K个节点(每日一道算法题)
- 【算法之链表(一)】判断单链表中是否有环、环的长度、环的入口节点,单链表的倒数第K个节点等
- 逆置、翻转链表/查找单链表的倒数第k个节点/A+B不使用四则运算++ -- 等
- 剑指offer_面试题15_链表中倒数第k个节点(考虑问题要全面)
- 查找单链表的倒数第k个节点,要求只能遍历一次链表
- python实现单链表中删除倒数第K个节点的方法
- C++实现单链表删除倒数第k个节点的方法