题目描述:
输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。
示例 1:
输入:head = [1,3,2]
输出:[2,3,1]
限制:
0 <= 链表长度 <= 10000
class ListNode {
int val;
ListNode next;
ListNode(int x) { val = x; }
}
public class A {
ListNode head = null;
//增加链表
public void addNode(int d){
ListNode list = new ListNode(d);
if(head==null){
head = list;
return ;
}
ListNode tmp = head;
while (tmp.next!=null){
tmp = tmp.next;
}
tmp.next = list;
}
//利用栈的先进后出的特性从尾到头反转链表的值
public int[] reversePrint(ListNode head) {
Stack<ListNode> stack = new Stack<ListNode>();
while(head!=null){
stack.push(head);
head = head.next;
}
int n = stack.size();
int[] a= new int[n];
for(int i=0;i<n;i++){
a[i] = stack.pop().val;
}
return a;
}
public static void main(String[] args) {
ListNode head = new ListNode(6);
A a=new A();
a.head=head;
a.addNode(2);
a.addNode(4);
a.addNode(3);
int[] m= new int[4];
for(int i=0;i<4;i++){
System.out.println(a.reversePrint(head)[i]);
}
}
}