剑指 Offer 06. 从尾到头打印链表
输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。
示例 1:
输入:head = [1,3,2]
输出:[2,3,1]
思路
首先逆序给定链表。并记录链表节点个数。‘

通过节点个数确定数组大小。
遍历逆序后链表,同时将值copy到数组。
代码示例:
typedef struct ListNode Node;
int* reversePrint(struct ListNode* head, int* returnSize){
if(head == NULL)
{
*returnSize = 0;
return NULL;
}
Node* n1 = NULL,*n2 = head,*n3 = head->next;
//记录链表长度。
int count = 0;
//逆序链表
while(n2)
{
n2->next = n1;
n1 = n2;
n2 = n3;
if(n3)
n3= n3->next;
count++;
}
//创建数组 大小为链表节点个数
int* arr = (int*)malloc(sizeof(int) * count);
int i = 0;
while(n1)
{ //拷贝val
arr[i] = n1->val;
i++;
n1 = n1->next;
}
*returnSize = count;
return arr;
}
本文讲解如何使用C++实现从尾到头遍历并打印链表的方法,包括逆序链表的过程,以及创建数组存储节点值的步骤。适合理解链表操作和数组数据结构的开发者。
797

被折叠的 条评论
为什么被折叠?



