一元多项式的表示
typedef struct Lnode{ int coef; // xishu int expon; // zhishu struct Lnode *next; }Lnode,*Link;
#include<stdio.h> #include<stdlib.h> typedef struct Lnode{ int coef; // xishu int expon; // zhishu struct Lnode *next; }Lnode,*Link; void initial(Link &L){ L=(Link)malloc(sizeof(Lnode)); L->next=NULL; } void insert(Link &L){ int n; Link end,p; printf("请输入需要输入的项数:"); scanf("%d",&n); while(n--){ p=(Link)malloc(sizeof(Lnode)); scanf("%d",&p->coef); scanf("%d",&p->expon); end->next=p; end = p; } end->next=NULL; } void bianli(Link L){ Link p; p=L->next; if(p->coef<0) printf(" - "); printf("%dx^%d",p->coef,p->expon); p=p->next; do{ if(p->coef>0) printf(" + "); printf("%d^%d",p->coef,p->expon); p=p->next; }while(p!=NULL); } void add(Link &p1,Link &p2,Link &p3){ //p3带有头结点 Link pa,pb,pc,p; pa=p1->next; pb=p2->next; pc=(Link)malloc(sizeof(Lnode)); // 为方便表头插入,先产生一个临时空节点 p3=pc; while(pa&&pb){ if(pa->expon>pb->expon){ p=(Link)malloc(sizeof(Lnode)); p->coef=pa->coef; p->expon=pa->expon; p->next=NULL; pc->next=p; pc=p; pa=pa->next; } else if(pa->expon<pb->expon){ p=(Link)malloc(sizeof(Lnode)); p->coef=pb->coef; p->expon=pb->expon; p->next=NULL; pc->next=p; pc=p; pb=pb->next; } else{ p=(Link)malloc(sizeof(Lnode)); p->coef=pb->coef+pa->coef; p->expon=pb->expon; p->next=NULL; pc->next=p; pc=p; pa=pa->next; pb=pb->next; } } pc->next=pa?pa:pb; } main(){ Link a,b,c; initial(a); initial(b); insert(a); insert(b); add(a,b,c); bianli(c); }

更多精彩