首页 > 其他 > 详细

剑指 Offer 06. 从尾到头打印链表

时间:2021-06-20 15:04:32      阅读:18      评论:0      收藏:0      [点我收藏+]
>输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。 链表信息: ```cpp /** ?* Definition for singly-linked list. ?* struct ListNode { ?* ? ? int val; ?* ? ? ListNode *next; ?* ? ? ListNode(int x) : val(x), next(NULL) {} ?* }; ?*/ ?``` 思路: ? ? 将链表的值从尾到头反过来,链表只有下一个节点的指针,所以得从头遍历取出每个值; 1. 创建vector,从头到尾遍历链表,将值放入,调用std::reverse,头尾互换; ```cpp class Solution { public: ? ? vector reversePrint(ListNode* head) { ? ? ? ? vector v; ? ? ? ? ListNode* _head=head; ? ? ? ? while(_head){ ? ? ? ? ? ? v.push_back(_head->val); ? ? ? ? ? ? _head=_head->next; ? ? ? ? } ? ? ? ? ?reverse(v.begin(),v.end()); ? ? ? ? return v; ? ? } }; ``` 2.开始和第一种方法相同,后面在创建一个vector,用反向迭代器赋值; ```cpp class Solution { public: ? ? vector reversePrint(ListNode* head) { ? ? ? ?vector v; ? ? ? ? if(head==NULL) ? ? ? ? return v; ? ? ? ? ListNode* _end=head; ? ? ? ? while(_end->next!=NULL){ ? ? ? ? ? ? v.push_back(_end->val); ? ? ? ? ? ? _end=_end->next; ? ? ? ? } ? ? ? ? v.push_back(_end->val); ? ? ? ? vector v_reverse(v.rbegin(),v.rend()); ? ? ? ? return v_reverse; ? ? ? ?} }; ``` ![在这里插入图片描述](https://img-blog.csdnimg.cn/20210609205456910.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl81MjI3MDIyMw==,size_16,color_FFFFFF,t_70)

剑指 Offer 06. 从尾到头打印链表

原文:https://blog.51cto.com/u_14982125/2928281

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!