题目描述:输入一个链表,从尾到头打印链表每个节点的值。
思路:借助栈实现,或使用递归的方法。
定义链表结构
package Test;
//结点 链表
public class ListNode {
public int val;
//下一个节点 a.next=b(next指向b)必须赋值
public ListNode next;
//结点存的值
public ListNode(int val) {
this.val = val;
}
}
实现代码如下
package Function;
import Test.ListNode;
import java.util.ArrayList;
import java.util.Stack;
//先进后出 栈思想
public class printListFromTailToHead06 {
//headNode头结点
public ArrayList<Integer> printListFromTailToHead(ListNode headNode) {
//列表
ArrayList<Integer> list = new ArrayList<>();
//栈
Stack<ListNode> stack = new Stack<>();
//进栈
while (headNode != null) {//链表不为空
stack.push(headNode);
headNode = headNode.next; }
//出栈
while (!stack.isEmpty()) {
list.add(stack.pop().val);
}
return list;
}
public static void main(String[] args) {
//4 5 9 11
ListNode a=new ListNode(5);
ListNode b=new ListNode(4);
a.next=b;
ListNode c=new ListNode(9);
b.next=c;
ListNode d=new ListNode(11);
c.next=d;
printListFromTailToHead06 p=new printListFromTailToHead06();
ArrayList<Integer> m=p.printListFromTailToHead(a);
System.out.println(m);
}
}