栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

链表反转 递归实现Java

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

链表反转 递归实现Java

啊 就因为我实现单链表时多一个头结点 差点…平安夜快乐 虽然是明天晚上 不过是我梦开始的时间。

package com.zhang;

public class Solution {

    //先构造一个简单的单链表
    private class linkNode{
        int val;//值域
        linkNode next;//下一个节点引用

        public linkNode() {
            this.next = null;//初始化
        }

        public linkNode(int val) {
            this.val=val;
            this.next=null;
        }
    }

    //创造一个链表头结点并返回
    public linkNode create(){

        linkNode head = new linkNode();//初始化的事情可以放在它的无惨构造
        return head;
    }

    //往链表中添加元素  尾插
    public boolean add(int val,linkNode ph){

        //找到链表结尾
        while (ph.next!=null){
            ph=ph.next;
        }

        //创造新节点  初始化事情可以放在linkNode的有参构造里
        linkNode pNew = new linkNode(val);
        ph.next = pNew;
        return true;

    }

    private int i=0; //记录方法的调用次数
    private linkNode ph; //记录头结点  因为互换从首结点开始
    //链表反转  递归实现
    public linkNode reverselink(linkNode pf) {

        
        //记录头结点  因为我的链表头结点和首结点不是一个结点
        if(this.i==0){this.ph=pf; pf=this.ph.next;}
        this.i=2;

        //递归实现
        if (pf == null || pf.next == null) {//找到最后一个节点
            //最后一个节点存入head节点的 next域中返转
            ph.next = pf;
            return  ph;
        } ;

        //ph 往后移动一位 用pt记录一下
        linkNode pt = pf.next;
        linkNode ret = reverselink(pt);
        //先给自己后面的节点地址域赋值
        pf.next.next= pf;
        pf.next = null;
        return ret;
    }

    //打印链表
    public  void showall(linkNode ph){
        while (ph.next!=null){
            System.out.print(ph.next.val+",");
            ph=ph.next;
        }

    }

    public static void main(String[] args) {
        Solution s= new Solution();
        linkNode l = s.create();
        s.add(1,l);
        s.add(2,l);
        s.add(3,l);
        s.add(6,l);
        s.add(5,l);
        s.add(7,l);
        s.showall(l);
        System.out.println();
        System.out.println("---------");
        s.showall(s.reverselink(l));
    }

}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/678677.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号