版权声明:本文为博主原创文章,未经博主允许不得转载。 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;
}
}
}
}