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

>输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。 链表信息: ```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. 从尾到头打印链表

上一篇:计算机基础


下一篇:Docker容器修改端口映射