
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 }