#include <iostream>
using namespace std;
struct NodeLink
{
int data_in;
NodeLink *next;
};
NodeLink *Rever(NodeLink *node);
int main()
{
NodeLink *head,*Node,*temp;
int data_in;
cin>>data_in;
Node=new NodeLink;
head=Node;
Node->data_in=data_in;
//创建链表过程
while (true)
{
cin>>data_in;
if (data_in==0)
{
break;
}
temp=new NodeLink;
temp->data_in=data_in;
Node->next=temp;
Node=temp;
}
Node->next=NULL;
NodeLink *result_re=Rever(head);
system("pause");
return 0;
}
NodeLink *Rever(NodeLink *node)
{
NodeLink *p1=NULL,*p2=NULL,*temp=NULL;
//输入节点为空
if (node==NULL)
{
return NULL;
}
//输入节点只有一个
if (node->next==NULL)
{
node->next=temp;
return p1;
}
//输入节点有两个
else if(node->next->next==NULL)
{
p1=node->next;
p1->next=node;
node->next=NULL;
return p1;
}
//输入节点有三个以上
else
{
while (1)
{
//第一次处理node
if (!temp)
{
p1=node->next;
p2=node->next->next;
p1->next=node;
node->next=NULL;
temp=p1;
p1=p2;
}
//以p1为头,temp记录的是上次的尾节点
else
{
if (p1->next==NULL)
{
p1->next=temp;
return p1;
}
p2=p1->next;
p1->next=temp;
temp=p1;
p1=p2;
}
}
}
}