1 #include<stdio.h>
 2 #include<stdlib.h>
 3 typedef struct Node{
 4     int data;
 5     Node*next,*pre;
 6 }Node,*LinkList;
 7 CreateLinkList(LinkList*L)
 8 {
 9     int e,length;
10     Node*r,*t;
11     *L=(LinkList)malloc(sizeof(Node));
12     scanf("%d",&length);
13     scanf("%d",&e);
14     (*L)->data=e;
15     r=*L;
16     for(int i=1;i<length;i++)
17     {
18         scanf("%d",&e);
19         t=(LinkList)malloc(sizeof(Node));
20         t->data=e;
21         r->next=t;
22         r=t;
23     }
24     r->next=*L;    
25 }
26 Cycle(LinkList L)
27 {
28     Node*pre=L,*t=pre->next;
29     while(t!=L)
30     {
31         t->pre=pre;
32         pre=t;
33         t=t->next;
34     }
35     t->pre=pre;
36 }
37 
38 Order(LinkList L)
39 {
40     Node*t=L->next;
41     printf("%d ",L->data);
42     while(t!=L)
43     {
44         printf("%d ",t->data);
45         t=t->next;
46     }
47 }
48 ReOrder(LinkList L)
49 {
50     Node*t=L->pre;
51     printf("%d ",L->data);
52     while(t!=L)
53     {
54         printf("%d ",t->data);
55         t=t->pre;
56     }
57 }
58 int main()
59 {
60     LinkList L;
61     CreateLinkList(&L);
62     Cycle(L);
63     Order(L);
64     printf("\n");
65     ReOrder(L);
66     return 0;
67     
68 }