从头到尾打印链表
Posted 小布丁value
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了从头到尾打印链表相关的知识,希望对你有一定的参考价值。
从头到尾打印链表
方法一:放入栈中,先进后出
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode(int x) { val = x; }
* }
*/
class Solution {
public int[] reversePrint(ListNode head) {
Stack<ListNode> stack = new Stack<ListNode>();
ListNode temp = head;
while (temp != null) {
stack.push(temp);
temp = temp.next;
}
int size = stack.size();
int[] print = new int[size];
for (int i = 0; i < size; i++) {
print[i] = stack.pop().val;
}
return print;
}
}
方法二:递归打印
class Solution {
ArrayList<Integer> list = new ArrayList<>();
public int[] reversePrint(ListNode head) {
recur(head);
int [] res=new int[list.size()];
for(int i=0;i<res.length;i++){
res[i]=list.get(i);
}
return res;
}
public void recur(ListNode head){
if(head==null) return ;
recur(head.next);
list.add(head.val);
}
}
两种方法本质上是一样的,栈的原理就是递归。
时间复杂度O(N),空间复杂度O(n)都不太好
可以试着反转链表打印,可以使空间复杂度讲到O(1);
以上是关于从头到尾打印链表的主要内容,如果未能解决你的问题,请参考以下文章