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

给定一个带有头结点 head 的非空单链表,返回链表的中间结点。如果有两个中间结点,则返回第二个中间结点

程序员文章站 2022-07-10 20:15:18
...
class Node {
    public int data;
    public Node next;  //存储对象引用

    public Node(int data) {
        this.data = data;  //没有初始化next的引用,不知道next当前指向哪个节点
    }
}

public class SingleList {
    public Node head;//定位头节点的引用

    public void addFirst(int data) {
        Node node = new Node(data); //构造要插入的对象
        if(this.head == null) {
            this.head = node;
            return;
        } else {
            node.next = this.head;
            this.head = node;
        }
    }

    public void show(){
        Node cur=this.head;   //从头开始
        while(cur!=null){
            System.out.print(cur.data+" ");
            cur=cur.next;
        }
        System.out.println();
    }

    public Node middle(){
        Node fast=this.head;
        Node slow=this.head;
        while(fast!=null&&fast.next!=null){
            fast=fast.next.next;
            slow=slow.next;
        }
        return slow;
    }
}

```java
public class TestDemo {
    public static void main(String[] args) {
SingleList singleList=new SingleList();
        singleList.addFirst(2);
            singleList.addFirst(1);
            singleList.addFirst(3);
            singleList.addFirst(4);
            singleList.addFirst(2);
        singleList.show();

Node middle=singleList.middle();
        System.out.println(middle.data);

    }
}

相关标签: 链表 java

推荐阅读