本文主要是介绍剑指offer--06. 从尾到头打印链表,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
解法1:先知道链表的长度是多少,然后创建数组,最后倒叙给数组赋值。
/*** Definition for singly-linked list.* public class ListNode {* int val;* ListNode next;* ListNode(int x) { val = x; }* }*/
class Solution {public int[] reversePrint(ListNode head) {if(head==null){return new int [] {};}// 1.计算链表的长度int count=0;ListNode current=head;while(current!=null){current=current.next;count++;}// 2. 初始化存放结果的数组int[] array=new int[count];//3.数组赋值current=head;int pos=count-1;while(current!=null){array[pos]=current.val;current=current.next;pos--;}return array;}
}
解法2:辅助栈的解法
/*** Definition for singly-linked list.* public class ListNode {* int val;* ListNode next;* ListNode(int x) { val = x; }* }*/
class Solution {private Stack<Integer> stack;public int[] reversePrint(ListNode head) {stack=new Stack<>();ListNode current;current=head;int count=0;while(current!=null){stack.push(current.val);current=current.next;count++;}int[] array=new int[count];int pos=0;while(!stack.isEmpty()){array[pos]=stack.pop();pos++;}return array;}
}
这篇关于剑指offer--06. 从尾到头打印链表的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!