//为方便计,未对原来的链表进行解构
#include <iostream>
#include <string>
#include <stdio.h>
#include <vector>
using
namespace
std;
struct
Entry
{
string m;
Entry *next;
};
Entry *GetNewEntry(){
string p;
cin>>p;
Entry *newOne=
new
Entry;
newOne->m=p;
newOne->next=NULL;
return
newOne;
}
Entry *BuildList(
int
n)
{
Entry *listHead=NULL;
Entry *p=NULL;
while
(n>0)
{
Entry *newOne=GetNewEntry();
n--;
if
(p==NULL)
{
p=newOne;
listHead=p;
}
else
{
p->next=newOne;
p=p->next;
}
}
return
listHead;
}
void
deallocate(Entry *list,vector<string> &m)
//为简单计,只复制,不解构
{
Entry *p=list;
while
(p!=NULL)
{
m.push_back(p->m);
p=p->next;
}
}
Entry *BuildnewList(
int
n,vector<string> &m)
{
Entry *list=NULL;
Entry *p=NULL;
for
(
int
i=n-1;i>=0;i--)
{
Entry *newOne=
new
Entry;
newOne->m=m.at(i);
newOne->next=NULL;
if
(p==NULL)
{
p=newOne;
list=p;
}
else
{
p->next=newOne;
p=p->next;
}
}
return
list;
}
void
PrintEntry(Entry *m)
{
cout<<m->m;
}
void
PrintList(Entry *list)
{
if
(list==NULL){
cout<<endl;
}
else
{
PrintEntry(list);
if
(list->next!=NULL)
{
cout<<
" "
;
}
PrintList(list->next);
}
}
int
main()
{
int
m;
while
(cin>>m)
{
if
(m==0){
cout<<
"NULL"
<<endl;
}
else
{
vector<string> strList;
Entry *p=BuildList(m);
deallocate(p,strList);
Entry *list=BuildnewList(m,strList);
PrintList(list);
}
}
return
0;
}
/**************************************************************
Problem: 1518
User: 无梦楼主lv
Language: C++
Result: Accepted
Time:350 ms
Memory:6940 kb
****************************************************************/