机试练习7.11

来源:互联网 发布:佛跳墙软件下载 编辑:程序博客网 时间:2024/06/06 03:29

输入一个链表,从尾到头打印链表每个节点的值。
两种方法:
方法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;
}
};

原创粉丝点击