机试练习7.11

xiaoxiao2021-02-28  68

输入一个链表,从尾到头打印链表每个节点的值。 两种方法: 方法1:利用堆栈 注意:使用stack时,要指明#include 和using namespace std; 而且STL的方法要牢记!!stack有empty() top() pop() push();vector有at() [] push_back() pop_back()等

/** * struct ListNode { * int val; * struct ListNode *next; * ListNode(int x) : * val(x), next(NULL) { * } * }; */ #include <stack> #include <iostream> using namespace std; class Solution { public: vector<int> printListFromTailToHead(ListNode* head) { ListNode * p=head; vector<int> v; stack<int> s; while(p!=NULL) { s.push(p->val); p=p->next; } while(!s.empty()) { int val=s.top(); s.pop(); v.push_back(val); } return v; } };

方法2:递归(小白就没有想到!!) /** * struct ListNode { * int val; * struct ListNode *next; * ListNode(int x) : * val(x), next(NULL) { * } * }; */ class Solution { public: vector printListFromTailToHead(ListNode* head) { vector v; if(head==NULL) return v; else { v=printListFromTailToHead(head->next); v.push_back(head->val); } return v; } };

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

最新回复(0)