题目:给定链表的头节点,实现删除链表的中间节点的函数
例如:不删除任何节点
1->2 删除节点2
1->2->3 删除节点2
1->2->3->4 删除节点2
1->2->3->4->5 删除节点3
1->2->3->4->5->6 删除节点3
分析:如果链表长度为空或者长度为1,不需要调整,则直接返回;如果链表的长度为2,将头节点删除即可
当链表长度到达3,删除第二个节点即可;当链表长度增加到2,删除第三个节点,也就是每当长度增加2,就删除上一个节点的后一个节点。
如果要删除一个节点,则需要找到待删除节点的前一个节点
代码实现:
package com.ly; public class removeMidNode { public static void main(String[] args){ Node a = new Node(2,"1"); Node b = new Node(3,"2"); a.next = b; Node c = new Node(4,"3"); b.next = c; Node d = new Node(5,"4"); c.next = d; Node e = new Node(6,"5"); d.next = e; System.out.println(func(a)); } public static Node func(Node head){ if(head == null && head.next == null){ return head; } if(head.next.next == null){ return head.next; } Node pre = head; Node cur = head.next.next; while (cur.next != null && cur.next.next != null){ pre = head.next; cur = cur.next.next; } pre.next = pre.next.next; return head; } }
运行结果:
可见第三个节点被我们删除了!
标签:Node,head,删除,--,next,链表,节点 From: https://www.cnblogs.com/99kol/p/16981090.html