原题描述:
输入一个链表,从尾到头打印链表每个节点的值。
思路1:使用头插法对链表进行转置
思路2:利用栈来保存链表中的每一个数
思路2代码:
#include<iostream>
#include<stdio.h>
#include<cstdlib>
#include<vector>
#include<stack>
using namespace std;
struct ListNode {
int val;
struct ListNode *next;
ListNode(int x) :val(x), next(NULL) {
}
};
class Solution {
public:
vector<int> printListFromTailToHead(ListNode* head) {
vector<int>list;
stack<ListNode*>st;
ListNode*p=head;
while(p!=NULL){
st.push(p);
p=p->next;
}
while(!st.empty()){
ListNode*s=st.top();
st.pop();
list.push_back(s->val);
}
return list;
}
};
int main()
{
Solution*sol=new Solution();
ListNode*head=new ListNode(0);
ListNode*tail=head;
for(int i=1;i<=10;i++){
ListNode*p=new ListNode(i);
tail->next=p;
tail=p;
}
vector<int>nums=sol->printListFromTailToHead(head);
for(int i=0;i<nums.size();i++){
cout<<nums[i]<<endl;
}
}