#include<stdio.h>
#include<stdlib.h>
typedef struct Data
{
int num;
struct Data *next;
} Data;
Data * creat(Data *head)
{
int n = 0;
Data *p1, *p2;
p1 = p2 = (Data *)malloc(sizeof(Data));
if(p1 == NULL)
{
printf("鐢宠澶辫触锛?);
return 0;
}
printf("杈撳叆num\n");
scanf("%d", &(p1->num));
while(p1->num != 0)
{
n++;
if(n == 1)
{
head->next = p1;
}
else
{
p2->next = p1;
p2 = p1;
}
p1 = (Data *)malloc(sizeof(Data));
if(p1 == NULL)
{
printf("鐢宠澶辫触锛?);
exit(1);
}
printf("杈撳叆num\n");
scanf("%d", &(p1->num));
}
p2->next = NULL;
return head;
}
Data * fanlist(Data *head)
{
Data *p1, *p2, *p3, *p4;
p4 = head;
p1 = head->next;
p2 = p1->next;
p3 = p2->next;
for( ; p3 != NULL; )
{
if(p3->next == NULL)
{
p3->next = NULL;
}
p2->next = p1;
p1 = p2;
p2 = p3;
p3 = p3->next;
}
p2->next = p1;
p1 = p2;
p4->next->next = NULL;
p4->next = p1;
return (p4);
}
void print(Data *d)
{
Data *p;
p = d->next;
for(;p != NULL;p = p->next)
{
printf("%d ", p->num);
}
printf("\n");
}
int main()
{
Data data, *head;
Data *h;
head = creat(&data);
h = fanlist(head);
print(h);
return 0;
}