求一个单链表的中间节点

求一个单链表的中点

思路

用两个指针,慢指针每次走一步,快指针每次走两步,当快指针结束时,慢指针所在的位置就是中点。

代码实现

主要方法:

public static node lookMid(node head){

        //求中间节点,快慢指针
        node low = head;
        node fast = head;
        while(fast != null && fast.next != null){
            fast = fast.next.next;
            low = low.next;
        }
        System.out.println("中间节点的值为:"+low.value);
        return low;
    }

测试程序:

//求一个单链表的中点
public class MidNode {
        //节点类
    static class node{
         node next;
         int value;
        public node(int a){
            this.value = a;
        }
    }
    public static void main(String[] args) {
        //创建链表
        node head = new node(0);
        node p = head;
        for(int i=1;i<7;i++){       //自定义节点长度7
            p.next = new node(i);
            p = p.next;
          }
        //调用方法
        lookMid(head);
    }
}

输出:(自定义创建的链表为0-1-2-3-4-5-6,中间值3)

中间节点的值为:3

猜你喜欢

转载自blog.csdn.net/babylove_bale/article/details/78725327
今日推荐