#include<iostream.h> typedef struct node{ int data; node *next; }*ptrn; ptrn creatlink() { ptrn head,p1,p2,p3; head=new node; int a; int b; p1=0; cout<<"输入一个整数表示链表中的一个元素,以-1表示结束"<<endl; for(int i=0;;i++) { cin>>a; if(a==-1) break; else { p2=new node; p2->data=a; if(p1==0) { p1=p2; p3=p2; } else { p3->next=p2; p3=p2; } } } if(p1) p3->next=0; head=new node; head->next=p1; return head; } int linklength(ptrn head) { ptrn temp; temp=head->next; for(int j=1;;j++) { temp=temp->next; if(temp==0) break; } return j; } ptrn oppositelink(ptrn head) { ptrn pa,pb,pc; pa=0; pb=new node; ptrn temp1; int n=linklength(head); for(int i=0;i<n;i++) { temp1=head->next; for(int j=n-i;j>0;j--) { pb=temp1; temp1=temp1->next; } if(pa==0) { pa=pb; pc=pb; } else { pc->next=pb; pc=pb; } } if(pa)pc->next=0; head->next=pa; return head; } void main() { ptrn head=creatlink(); linklength(head); cout<<"此链的倒序为"<<endl; head=oppositelink(head); ptrn tem; tem=head->next; for(int k=0;k<linklength(head);k++) { cout<<tem->data<<endl; tem=tem->next; } }