
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 }