1 #include<stdio.h>
 2 #include<stdlib.h>
 3 typedef struct{
 4     int coef;
 5     int exp;
 6 }PolyTerm;
 7 typedef struct Node{
 8     PolyTerm data;
 9     Node*pre,*next;
10 }PolyNode,*LinkPoly;
11 Create(LinkPoly*P)
12 {
13     PolyNode*t,*r;
14     int length;
15     *P=(LinkPoly)malloc(sizeof(PolyNode));
16     r=*P;
17     scanf("%d",&length);
18     for(int i=0;i<length;i++)
19     {
20         t=(PolyNode*)malloc(sizeof(PolyNode));
21         scanf("%d %d",&t->data.coef,&t->data.exp);
22         r->next=t;
23         t->pre=r;
24         r=t;
25     }
26     r->next=*P;
27     (*P)->pre=r;
28 }
29 Seperate(LinkPoly*P1,LinkPoly*P2)
30 {
31     PolyNode*t=(*P1)->next,*tnext;
32     *P2=(LinkPoly)malloc(sizeof(PolyNode));
33     PolyNode*p1=*P1,*p2=*P2;
34     while(t!=*P1)
35     {
36         tnext=t->next;
37         if(t->data.exp%2==0)
38         {
39             t->pre=p2;
40             p2->next=t;
41             p2=p2->next;
42         }
43         else 
44         {
45             t->pre=p1;
46             p1->next=t;
47             p1=p1->next;
48         }
49         
50         t=tnext;
51     }
52     p1->next=*P1,(*P1)->pre=p1;
53     p2->next=*P2,(*P2)->pre=p2;
54 }
55 Order(LinkPoly P)
56 {
57     PolyNode*t=P->next;
58     int i=1;
59     while(t!=P)
60     {
61         printf("第%d项%dx^%d\n",i,t->data.coef,t->data.exp);
62         t=t->next;
63         i++;
64     }
65 }
66 int main()
67 {
68     LinkPoly P1,P2;
69     Create(&P1);
70     Seperate(&P1,&P2);
71     Order(P1);
72     printf("\n");
73     Order(P2);
74     return 0;
75 }