从头到尾打印链表
输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。
示例 1
输入:
head = [1,3,2]
输出:
[2,3,1]
限制:
0 <= 链表长度 <= 10000
解法:入栈出栈
int* reversePrint(struct ListNode* head, int* returnSize){
// 使用一个ListNode指针变量作为中间变量
// 栈,开辟一个n大小的栈+n大小的数组 2n O(n),时间是2n O(n)
// 定义一个栈
int *top = malloc(10001*sizeof(int));
int stack_elem = -1;
//初始化数组
//遍历链表,入栈
while(head != NULL){
top[++stack_elem] = head->val;
head = head->next;
}
*returnSize = stack_elem+1;
//出栈
//定义一个数组res
int *res = malloc((*returnSize)*sizeof(int));
int *result = res;
int i = 0;
while(stack_elem>-1){
*res++ = top[stack_elem--];
}
return result;
}