一、题目要求
题目: 输入一个链表,从尾到头打印链表每个节点的值
二、解题思路
题目要求从尾到头打印链表的节点值,可以联想到栈的特性:后进先出。由此入手解决问题。
三、代码实现
// 输入一个链表,从尾到头打印链表每个节点的值
import java.util.Stack;
import java.util.ArrayList;
class ListNode{
int val;
ListNode next=null;
ListNode(int val){
this.val=val;
}
}
public class Solution {
public static ArrayList<Integer> printListFromTailToHead(ListNode listNode) {
//使用栈解决从尾到头输出结果
Stack<Integer> zhan=new Stack<Integer>();
while(listNode!=null){
zhan.push(listNode.val); //将链表节点值从头到尾入栈
listNode=listNode.next;
}
ArrayList<Integer> al=new ArrayList<Integer>();
while(!zhan.isEmpty()){
al.add(zhan.pop()); // 将栈中数值出栈存到链表中
}
return al; // 返回链表
}
public static void main(String[] args){
ListNode s=new ListNode(1);
s.next=new ListNode(2);
ArrayList<Integer> a=printListFromTailToHead(s);
for(int i=0;i<a.size();i++){
System.out.println(a.get(i));
}
}
}