题解 | #从尾到头打印链表#

从尾到头打印链表

https://www.nowcoder.com/practice/d0267f7f55b3412ba93bd35cfa8e8035

/**
*    public class ListNode {
*        int val;
*        ListNode next = null;
*
*        ListNode(int val) {
*            this.val = val;
*        }
*    }
*
*/
import java.util.ArrayList;
import java.util.LinkedList;
public class Solution {
    public ArrayList<Integer> printListFromTailToHead(ListNode listNode) {
        //建立一个链表
        LinkedList<Integer> stack = new LinkedList<Integer>();
        //只要listNode链表存在数
        //就将数一个个挤入stack链表
        //不断递归
        while (listNode != null) {
            stack.addLast(listNode.val);
            listNode = listNode.next;
        }
        //建立一个链表res进行存放
        ArrayList<Integer> res = new ArrayList<Integer>();
        /*因为stack.size()随着removeLast()操作会越来越小,所以需要
        一个常数m进行记录最初值
        */
        int m = stack.size();
        for (int i = 0; i < m; i++) {
            //removeLast() 删除并返回最后一个元素
            res.add(stack.removeLast()) ;
            //pop() 是栈中删除并返回顶部元素
            //类似于removeFirst

        }
        return res;//返回链表
    }
}

与LC不同,是返回一个链表res,需要将链表的值逆向输入至res

for循环中,要注意stack.size()的值是不断缩小的,因此需要m进行记录

全部评论

相关推荐

2025-11-14 16:15
南京大学 Java
点赞 评论 收藏
分享
2025-12-29 22:46
武汉大学 Java
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务