力扣:剑指offer 从尾到头打印链表

前言:内容包括:题目,代码实现,大致思路

题目:

输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。

示例 1:

输入:head = [1,3,2]
输出:[2,3,1]

代码实现:

int* reversePrint(struct ListNode* head, int* returnSize)
{
   struct ListNode*p = head;
   int count = 0;
   while(p)
   {
       count++;
       p=p->next;
   }
   *returnSize = count;
   int*arr=(int*)malloc(sizeof(int)*count);
   count--;
   p=head;
   while(p)
   {
       arr[count--]=p->val;
       p=p->next;
   }
   return arr;
}

大致思路:

1 统计节点的个数

2 malloc动态开辟一块大小和原链表节点数一样的空间,用于倒着存放每个节点中的值

3 count--,让此时的count作为最后一个元素的下标

   p=head,使得指针p重新指向第一个节点

你可能感兴趣的:(leetcode,leetcode,c语言)