题目:输入一个链表,从尾到头打印链表每个节点的值。
有两种方式:第一种,修改源原链表,把链表中链接节点的指针翻转过来。
第二种,不修改原链表,用栈。
今天重点讲第二种,不改原链表。
思路:遍历原链表,把值压入栈中,然后将栈中的值依次输出。
代码:
public class ListNode {
int val;
ListNode next = null;
ListNode(int val) {
this.val = val;
}
}
public ArrayList<Integer> printListFromTailToHead(ListNode listNode) {
Stack stack = new Stack();
while(listNode!=null)
{
stack.push(listNode.val);
listNode = listNode.next;
}
ArrayList<Integer> resultlist = new ArrayList<Integer>();
while(!stack.empty())
{
resultlist.add((Integer) stack.pop());//注意这里应该使用pop,因为pop取完会移除栈顶的值,peek取完不移除
}
return resultlist;
}