从尾到头打印链表

xiaoxiao2021-02-27  175

题目描述

输入一个链表,从尾到头打印链表每个节点的值。 第一种方法利用递归实现

/** * struct ListNode { * int val; * struct ListNode *next; * ListNode(int x) : * val(x), next(NULL) { * } * }; */ class Solution { public: vector<int> L; vector<int> printListFromTailToHead(ListNode* head) { if(head) { if(head->next) { L=printListFromTailToHead(head->next); } L.push_back(head->val); } return L; } }; /*方法二:利用栈存储,和递归原理一样 链接:https://www.nowcoder.com/questionTerminal/d0267f7f55b3412ba93bd35cfa8e8035 来源:牛客网 class Solution { public:     vector<int> printListFromTailToHead(struct ListNode* head) { //利用栈的逆序输出特性                stack<int> stack;         vector<int> vector;         struct ListNode *p = head;         if (head != NULL) {             stack.push(p->val);             while((p=p->next) != NULL) {                 stack.push(p->val);             }             while(!stack.empty()) {                 vector.push_back(stack.top());                 stack.pop();             }         }         return vector;     }           }; */ /*方法三: 链接:https://www.nowcoder.com/questionTerminal/d0267f7f55b3412ba93bd35cfa8e8035 来源:牛客网 class Solution { public:     vector<int> printListFromTailToHead(ListNode* head) {         vector<int> a;         while(head)         {             a.push_back(head->val);             head=head->next;         }         reverse(a.begin(),a.end());         return a;              } }; 思路:将链表的结点值顺序放入容器中,然后倒置即可。 */

转载请注明原文地址: https://www.6miu.com/read-14622.html

最新回复(0)