描述
输入一个链表的头节点,按链表从尾到头的顺序返回每个节点的值(用数组返回)。
如输入{1,2,3}的链表如下图:
返回一个数组为[3,2,1]
0 <= 链表长度 <= 10000
C语言版
/**
* struct ListNode {
* int val;
* struct ListNode *next;
* };
*
* C语言声明定义全局变量请加上static,防止重复定义
*/
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param listNode ListNode类
* @return int整型一维数组
* @return int* returnSize 返回数组行数
*/
int* printListFromTailToHead(struct ListNode* listNode, int* returnSize ) {
// write code here
struct ListNode* cur=listNode;
int n=0;
int *arr=NULL;
while(cur!=NULL){
cur=cur->next;
n++;
}
arr = (int*)malloc(sizeof(int)*n);
cur = listNode;
*returnSize =n;
while(cur!=NULL){
arr[--n]=cur->val;
cur = cur->next;
}
return arr;
}
Java版
/**
* public class ListNode {
* int val;
* ListNode next = null;
*
* ListNode(int val) {
* this.val = val;
* }
* }
*
*/
import java.util.ArrayList;
public class Solution {
ArrayList<Integer> array = new ArrayList();
public ArrayList<Integer> printListFromTailToHead(ListNode listNode) {
if(listNode !=null) {
printListFromTailToHead(listNode.next);
array.add(listNode.val);
}
return array;
}
}