• 欢迎光临~

链表--删除链表的中间节点

开发技术 开发技术 2022-12-13 次浏览

题目:给定链表的头节点,实现删除链表的中间节点的函数

例如:不删除任何节点

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;
    }
}

运行结果:

可见第三个节点被我们删除了!

链表--删除链表的中间节点

 

程序员灯塔
转载请注明原文链接:链表--删除链表的中间节点
喜欢 (0)