剑指offerNo3. 从尾到头打印链表 (Java)

题目描述:

输入一个链表,按链表从尾到头的顺序返回一个ArrayList。

思路:可用栈先进后出的思想进行倒序打印。

代码:

package offer;
import java.util.ArrayList;
import java.util.Stack;

public class TestNo3 {
    //单链表
    static class ListNode{
        int val;
        ListNode next = null;
        ListNode(int val){
            this.val = val;
        }
    }
    public static void main(String[] args) {
        ListNode head = new ListNode(0);
        ListNode newHead = head;
        for(int i=1;i<5;i++){
            newHead.next = new ListNode(i);
            newHead = newHead.next;
        }
        System.out.println(new TestNo3().printListFromTailToHead(head));
    }
    
    public ArrayList<Integer> printListFromTailToHead(ListNode listNode) {
        Stack<Integer> stack = new Stack<>();
        //先正序将链表中的值放入栈中
        while (listNode != null){
            stack.push(listNode.val);
            listNode = listNode.next;
        }
        ArrayList<Integer> list = new ArrayList<>();
        //将栈中的元素逐个加入到列表中
        while (!stack.isEmpty()){
            list.add(stack.pop());
        }
        return list;
    }
}
发布了46 篇原创文章 · 获赞 11 · 访问量 3569

猜你喜欢

转载自blog.csdn.net/qq_40664693/article/details/104327211