题目描述:
给定一个链表,从尾部到头部打印输出链表结点的值。
思路:看到倒叙输出,那么想到使用栈来处理,因为栈是先进后出。首先遍历一遍链表将每个节点的值入栈,然后依次出栈即可。
代码如下:
import java.util.*;
public class Main6
{
public static void main(String[] args)
{
//初始化链表
Scanner s = new Scanner(System.in);
int n = s.nextInt();
ListNode root = new ListNode(0);
ListNode node = root;
for(int i=1;i<n;i++)
{
node.next = new ListNode(i);
node = node.next;
}
rprintList(root, n);
}
public static void rprintList(ListNode root,int n) //倒叙输出的方法,root为链表头结点,n为链表的节点数
{
//将链表中的元素压入栈中
Stack stacks = new Stack();
ListNode node = root;
for(int i=0;i<n;i++)
{
stacks.push(new Integer(node.val)); //压入栈
node = node.next;
}
//出栈,倒叙输出链表的元素
for(int i=0;i<n;i++)
{
System.out.print(stacks.pop()+" "); //依次出栈,相当于倒叙输出
}
}
}
class ListNode
{
int val;
ListNode next;
public ListNode(int val)
{
this.val = val;
}
}
当然上面的代码也不是最好的,有很多可以根据实际情况修改的地方,这里仅仅写个测试类。