链表反转

来源:互联网 发布:红蜘蛛教学软件介绍 编辑:程序博客网 时间:2024/04/18 11:03

一、题目要求

题目: 输入一个链表,从尾到头打印链表每个节点的值

二、解题思路

题目要求从尾到头打印链表的节点值,可以联想到栈的特性:后进先出。由此入手解决问题。

三、代码实现

// 输入一个链表,从尾到头打印链表每个节点的值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));}}}