#include <iostream>
#include<stdlib.h>
using namespace std;
typedef struct node
{
?int data;
?struct node *next;
}node;
node *creat()
{
?node *head,*p,*s;
?int x,cycle;
?head=(node*)malloc(sizeof(node));
?p=head;
?while(cycle)?? //cycle相当于是否向下创建新结点标志位
?{
??cout<<"please input one number:"<<endl;
??cin>>x;
??if(x)
??{
??s=(node*)malloc(sizeof(node));
??s->data=x;
??p->next=s;
??p=s;
??}
??else
??{
??cycle=0;
??}
?}
?p->next=NULL;
?head=head->next;
?return (head);
}
void *print(node *head)
{
?node *p;
?p=head;
?while(p)
?{
??cout<<p->data<<endl;
??p=p->next;
?}
?return 0;
}
node *reverse(node *head)
{
?node *p1,*p2,*p3;
?p1=head,p2=p1->next;
?while(p2)
?{
??p3=p2->next;
??p2->next=p1;
??p1=p2;?//注意先后次序,必须先让P1指向p2,然后再让p2指向p3,否则p2会把p2消掉,直接跳出循环。
??p2=p3;
?} ?head->next=NULL; ?head=p1; ?return (head); } void main() { ?node *head; ?head=creat(); ?print(head); ?head=reverse(head); ?print(head); }