BJFUOJ:链表的逆转
#include<bits/stdc++.h>
using namespace std;
typedef struct Lnode {
int num;
struct Lnode *next;
} Lnode,*Linklist;
void InitLinklist(Linklist &l) {
l = new Lnode;
l->next = NULL;
}
void CreatLinklist(Linklist &l,int n) {
Linklist p,r = l;
for(int i=1; i<=n; i++) {
p = new Lnode;
cin>>p->num;
p->next = r->next;
r->next = p;
r = p;
}
}
void ReverseLinklist(Linklist &l){
Linklist p;
p = l->next;
Linklist q;
l->next = NULL;
while(p){
q = p->next;
p->next = l->next;
l->next = p;
p = q;
}
}
void Out(Linklist &l){
Linklist p = l->next;
while(p->next){
cout<<p->num<<" ";
p = p->next;
}
cout<<p->num<<endl;
}
int main() {
while(1) {
int n;
cin>>n;
if(n == 0) break;
Linklist l;
InitLinklist(l);
CreatLinklist(l,n);
ReverseLinklist(l);
Out(l);
}
}