从尾到头打印链表
Posted baishouzu
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了从尾到头打印链表相关的知识,希望对你有一定的参考价值。
链表不能像数组一样直接进行随机读取,只能从头结点开始打印链表。
题解:要求从尾到头打印链表,那么首先就是要找到链表的整体长度,通过长度创建数组,然后将链表的第一个节点的值放入数组的最后一个位置,最后的数组正序的值就是链表倒叙的值。
分析:整个题目中会对链表进行两次遍历,需要的额外空间就是链表的长度,因此时间为O(n),空间为O(n)。
完整代码如下:
1 /** 2 * @author: wooch 3 * @create: 2020/02/21 4 */ 5 6 /** 7 * 面试题06. 从尾到头打印链表 8 * 输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。 9 */ 10 public class P06_ReversePrint { 11 public int[] reversePrint(ListNode head) { 12 if (head == null) { 13 return new int[0]; 14 } 15 int len = 0; 16 ListNode p = head; 17 while (p != null) { 18 len++; 19 p = p.next; 20 } 21 int[] res = new int[len]; 22 p = head; 23 len--; 24 while (p != null) { 25 res[len--] = p.val; 26 p = p.next; 27 } 28 return res; 29 } 30 }
以上是关于从尾到头打印链表的主要内容,如果未能解决你的问题,请参考以下文章