剑指offer之从尾到头打印链表

来源:互联网 发布:盛势网络剧视频第四集 编辑:程序博客网 时间:2024/06/05 12:42

题目描述

将一个链表从尾到头来打印。
分析:
       这儿我们可以借助栈来实现,(先进后出),也就是说我们将链表从头到位依次存入栈中,那么对栈遍历就达到了对链表逆序的效果。
节点结构

public class ListNode {        int val;        ListNode next = null;        ListNode(int val) {            this.val = val;        }    }

      返回值是ArrayList,所以我们只需要将栈的数据放在ArrayList就行。stack.peek()是不该表栈顶的数据,只是单纯的读出,但是stack.pop()是将栈顶的元素读出来,并且删除栈顶元素。

import java.util.Stack;import java.util.ArrayList;public class Solution {    public ArrayList<Integer> printListFromTailToHead(ListNode listNode) {        Stack<Integer> stack = new Stack<Integer>();       while(listNode!=null){//将链表输出,用栈来存,           stack.push(listNode.val);//现在读出栈中的就是俩表逆序的东西           listNode=listNode.next;       }       //从返回值可以知道,返回的是顺序表       ArrayList<Integer> array = new ArrayList<Integer>();       while(!stack.empty()){//只要栈不是为空,那么他就会顺序下一个           array.add(stack.pop());//栈中的每一个元素出栈,写入到顺序表中       }       return array;    }}
原创粉丝点击