JZ6 从尾到头打印链表

JZ6 从尾到头打印链表,第1张


一、反序输出,一般想到堆栈,先进后出。


import java.util.ArrayList;
import java.util.Stack;
public class Solution {
    public ArrayList printListFromTailToHead(ListNode listNode) {
        //创建一个ArrayList 作为输出
        ArrayList out = new ArrayList<>();
        //链表头给 cur
        ListNode cur = listNode;
        //创建一个栈对象
        Stack stack = new Stack();
        while(cur != null){
            //把链表推入堆栈
            stack.push(cur);
            //取下一个数
            cur = cur.next;
        }
        //链表不为空时,出栈元素的值逐个加入到Out
        while(stack.size()>0){
            out.add(stack.pop().val);
        }
        return out;
    }
}


二、改变指针指向

public class Solution {
    public ListNode ReverseList(ListNode head) {
        //pre指针:用来指向反转后的节点,初始化为null
        ListNode pre = null;
        //当前节点指针
        ListNode cur = head;
        //循环迭代
        while (cur != null) {
            //先将当前cur(未改变指向前)的next保存到tmp中
            ListNode tmp = cur.next;
            //改变指针,使pre指向cur的下一位
            cur.next = pre;
            //更新pre为当前的cur值
            pre = cur;
            //原本cur的下一个节点保存在了tmp中,现在给cur
            cur = tmp;
        }
        return pre;
    }
}

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/563136.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-02
下一篇 2022-04-02

发表评论

登录后才能评论

评论列表(0条)

保存