前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >剑指 Offer 06. 从尾到头打印链表

剑指 Offer 06. 从尾到头打印链表

作者头像
Vincent-yuan
发布2022-05-06 08:41:16
1720
发布2022-05-06 08:41:16
举报
文章被收录于专栏:Vincent-yuan

输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。

示例 1:

输入:head = [1,3,2] 输出:[2,3,1]

限制:

0 <= 链表长度 <= 10000

题解:

使用栈,后进先出的特点。

从链表头开始,依次将节点入栈,然后依次弹出栈内元素并存储到数组中。

  • 创建一个栈,用于存储链表的节点
  • 创建一个指针,初始时指向链表的头节点
  • 当指针指向的元素非空时,重复下列操作:
    • 将指针指向的节点压入栈内    
    • 将指针移到当前节点的下一个节点
代码语言:javascript
复制
public class offer06 {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        ListNode head = new ListNode(1);
        head.next = new ListNode(3);
        head.next.next = new ListNode(2);
        
        int[] arr = reversePrint(head);
        for(int i:arr){
            System.out.print(i+" ");
        }
    }

    public static int[] reversePrint(ListNode head) {
        Stack<ListNode> stack = new Stack();//创建栈
        ListNode temp = head;//创建指向head的指针
        while(temp!=null){
            stack.push(temp);
            temp = temp.next;
        }
        
        int size = stack.size();
        int[] arr = new int[size];
        
        for(int i=0;i<size;i++){
            arr[i] = stack.pop().val;
        }
        return arr;
    }
}

/**
 * 单链表列表
 * @author Administrator
 *
 */
class ListNode{
    int val;
    ListNode next;
    ListNode(int x){
        val = x;
    }
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021-06-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档