剑指 Offer 06. 从尾到头打印链表 C语言
题目
输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。
输入:head = [1,3,2] 输出:[2,3,1]
一、思路
本题若不加其他限制条件,可以说非常简单,遍历链表并存到数组,最后逆序数组,然后输出。
二、代码
1.引入库
#include <stdio.h> #include <malloc.h> #include <cstring>
处理数组很标准的三个库 stdio.h是标准库 malloc.h,是用来申请数组内存的 cstring.h调用memest函数,实现数组清零。
2.具体代码
int* reversePrint(struct ListNode* head, int* returnSize){ struct ListNode* p = head; int i=0; int num = 0; int swap; int* arr = (int*)malloc(10000 * sizeof(int)); memset(arr, 0, 10000 * sizeof(int)); while(p) { arr[num++] = p->val; p=p->next; } for(i = 0;i < num / 2;i++) { swap = arr[i]; arr[i] = arr[num - i - 1]; arr[num - i - 1] = swap; } (*returnSize) = num; return arr; }
总结
题目不难,但是刷题要持之以恒,不能间断啊! 链表调用数据是p->val,不是p.val。