jzoffer-st-3:从尾到头打印链表

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u011877584/article/details/81879234

package com.fjf.test;

import java.util.ArrayList;
import java.util.Iterator;

import com.fjf.test.TestLink.Node;

/**
* 从尾到头打印链表
* 输入一个链表,按链表值从尾到头的顺序返回一个ArrayList。
* @author fjf
* 递归思想
*
*/
public class Test03 {

public static void main(String[] args) {

    MyLink l = new MyLink();
    for (int i = 0; i < 8; i++) {
        l.addLink(i);
    }
    l.print(l.head);

    System.out.println("------------");

    Solution s = new Solution();
    ArrayList list =    s.printListFromTailToHead(l.head);
    for (int i = 0; i < list.size(); i++) {
        System.out.println(list.get(i));
    }

}



//递归实现
static class Solution {
    ArrayList<Integer> list=new ArrayList<Integer>();
    public ArrayList<Integer> printListFromTailToHead(ListNode listNode) {
        if(listNode!=null){
                this.printListFromTailToHead(listNode.next);
                list.add(listNode.val);
            }
            return list;
    }
}

//定义节点
static class ListNode {
    int val;
    ListNode next = null;

    ListNode(int val) {
        this.val = val;
    }
}

 //定义链表
static class  MyLink{
     public ListNode head;
     public ListNode current;

     public void addLink(int data){
         if(head==null){
             head = new ListNode(data);
             current = head;
         }else{
             current.next = new ListNode(data);
             current = current.next;
         }
     }


        public void print(ListNode head){
            if(head == null){
                return;
            }

            current = head;
            while(current!=null){
                System.out.println(current.val);
                current = current.next;
            }
        } 
 }

}
这里写图片描述

猜你喜欢

转载自blog.csdn.net/u011877584/article/details/81879234