数据结构(三十四)
学习数据结构与算法过程中的心得体会以及知识点的整理,方便我自己查找,也希望可以和大家一起交流。
—— 从尾到头打印链表 ——
1.题目描述
输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。
示例:
输入:
head = [1,3,2]
输出:
[2,3,1]
2.代码
c
/**
* 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 max_size=0;
struct ListNode *ramdom=head;
while(ramdom){
++max_size;
ramdom=ramdom->next;
}
//int ans[max_size];
*returnSize=max_size;
int *ans=(int *)malloc((*returnSize)*sizeof(int));
ramdom=head;
while(ramdom){
ans[max_size-1]=ramdom->val;
ramdom=ramdom->next;
max_size--;
}
return ans;
}
(不知道为什么这题的链表头结点也有数据,按照常理是不会有的,所以一般struct ListNode *ramdom=head;
写成struct ListNode *ramdom=head->next;
)