#include<iostream>
#include<vector>
#include <stack>
using namespace std;
struct ListNode
{
int val;
struct ListNode *next;
ListNode(int x): val(x),next(NULL){}
};
class List
{
public:
ListNode *CreateList(vector<int> A)
{
if(A.empty())
return NULL;
ListNode *head=new ListNode(A[0]),*p=head;
ListNode *r=NULL;
for(vector<int> :: iterator iter=A.begin()+1;iter !=A.end();iter++)
{
ListNode *q=new ListNode(*iter);
(*p).next=q;
p=q;
}
return head;
}
};
void print(ListNode *head)
{
ListNode *p=head;
while(p)
{
cout<<(*p).val<<" ";
p=(*p).next;
}
cout<<endl;
}
void print_inverse(ListNode *head)
{
stack<struct ListNode *> nodes;
ListNode *p=head;
while(p!=NULL)
{
nodes.push(p);
p=(*p).next;
}
while(!nodes.empty())
{
p=nodes.top();
cout<<(*p).val<<" ";
nodes.pop();
}
}
int main()
{
int a[8]={1,2,3,4,5,6,7,8};
vector<int> arr(a,a+8);
List C;
ListNode *p=C.CreateList(arr);
print(p);
print_inverse(p);
return 0;
}
#include<vector>
#include <stack>
using namespace std;
struct ListNode
{
int val;
struct ListNode *next;
ListNode(int x): val(x),next(NULL){}
};
class List
{
public:
ListNode *CreateList(vector<int> A)
{
if(A.empty())
return NULL;
ListNode *head=new ListNode(A[0]),*p=head;
ListNode *r=NULL;
for(vector<int> :: iterator iter=A.begin()+1;iter !=A.end();iter++)
{
ListNode *q=new ListNode(*iter);
(*p).next=q;
p=q;
}
return head;
}
};
void print(ListNode *head)
{
ListNode *p=head;
while(p)
{
cout<<(*p).val<<" ";
p=(*p).next;
}
cout<<endl;
}
void print_inverse(ListNode *head)
{
stack<struct ListNode *> nodes;
ListNode *p=head;
while(p!=NULL)
{
nodes.push(p);
p=(*p).next;
}
while(!nodes.empty())
{
p=nodes.top();
cout<<(*p).val<<" ";
nodes.pop();
}
}
int main()
{
int a[8]={1,2,3,4,5,6,7,8};
vector<int> arr(a,a+8);
List C;
ListNode *p=C.CreateList(arr);
print(p);
print_inverse(p);
return 0;
}