1,题目
输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。
输入:head = [1,3,2]
输出:[2,3,1]
2,代码
//栈
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* struct ListNode *next;
* };
*/
/**
* Note: The returned array must be malloced, assume caller calls free().
*/
int* reversePrint(struct ListNode* head, int* returnSize){
int stack[10000]; //辅助栈
int top = 0; //栈顶指针
struct ListNode *q = head;
while(q != NULL){ //遍历链表并将每个结点值压入栈
stack[top++] = q->val;
q = q->next;
}
*returnSize = top;
int* res = (int*)malloc(sizeof(int) * (*returnSize));
for(int i=top-1, j=0; i >= 0; --i, ++j) //将栈中的元素从栈顶开始取出
res[j] = stack[i];
return res;
}