题目描述
输入一个链表,按链表从尾到头的顺序返回一个ArrayList
输入:{67,0,24,58}
输出:[58,24,0,67]
C++代码
vector<int> printListFromTailToHead(ListNode* head) {
//方法一:先把链表反转,再把值存到数组中去
#if 0
vector<int> a;
ListNode* cur = head;
ListNode* next ;
ListNode* pre = NULL;
while (cur != NULL)
{
next = cur->next;
cur->next = pre;
pre = cur;
cur = next;
}
while (pre != NULL)
{
a.push_back(pre->val);
pre = pre->next;
}
return a;
#endif
//方法二:使用vector的翻转函数:reverse
#if 0
vector<int> a;
while (head != NULL)
{
a.push_back(head->val);
head = head->next;
}
reverse(a.begin(), a.end());
return a;
#endif
//方法三:使用递归方法,递归函数的功能:从底向上(归的时候)把结点的值存到数组中去
#if 1
//递归结束的条件:链表为空
//递归区间的变化:就是链表中结点的变化
vector<int> a;
if (head == NULL)
return a;
a = printListFromTailToHead(head->next);//之前返回的值
//再加上这个结点的值
a.push_back(head->val);
return a;
#endif
}
该博客介绍了三种方法来实现C++代码中从尾到头遍历链表并将其转换为ArrayList。方法一通过反转链表,方法二利用vector的reverse函数,方法三采用递归策略。每种方法都提供了详细的实现步骤。

760

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



