专栏

当前位置/ 首页/ 要闻频道/专栏/ 正文

数据结构一元多项式计算算法(数据结构一元多项式的代数运算)

导读 多项式相加(用单链表实现,用尾插法建表,用墨守成连线法求新的多项式)#include#includetypedef struct LNode ...

多项式相加(用单链表实现,用尾插法建表,用墨守成连线法求新的多项式)#include#includetypedef struct LNode //单链表的结构{ int coef,exp; struct LNode *next;}LNode,*LinkList;void InitList(LinkList &L) //单链表的初始化。

数据输入{ LinkList p,s; L=(LinkList)malloc(sizeof(LNode)); if(!L) exit(0); L->next=NULL; p=L; do //用尾插法进行输入 { s=(LinkList)malloc(sizeof(LNode)); scanf("%d%d",&s->coef,&s->exp); p->next=s; //此处的连线有先后关系,因为如果先写第二个操作:L->next=s, //则是先将第一个操作中的L->next变为了s,从而使赋值发生错误 if(s->next) p=s; }while(s->exp); s->next=NULL;}int compare(int x,int y){ int flag; if(x>y) flag=1; if(x==y) flag=0; if(x

对两个链表进行求并操作{ int n; Lc=(LinkList)malloc(sizeof(LNode)); if(!Lc) exit(0); Lc->next=NULL; LinkList pa,pb,pc; pa=La->next; pb=Lb->next; Lc=pc=La; while(pa&&pb) { n=compare(pa->exp,pb->exp); switch(n) { case 1: pc->next=pa; pc=pa; pa=pa->next; break; case -1: pc->next=pb; pc=pb; pb=pb->next; break; case 0: pc->next=pa; pc=pa; pc->coef=pa->coef+pb->coef; pa=pa->next; pb=pb->next; break; } } pc->next=pa? pa:pb; //是其中一个线性表已结束的情况 free(Lb);}void print(LinkList &L){ LinkList p; p=L->next; while(p) { printf("+%d*x^%d",p->coef,p->exp); p=p->next; } printf("");}void main(){ LinkList L1,L2,L3; printf("Please input L1(coef and exp):"); InitList(L1); printf("L1="); print(L1); printf("Please input L2(coef and exp):"); InitList(L2); printf("L2="); print(L2); Add(L1,L2,L3); printf("The new list is:"); print(L3); printf("");}。

免责声明:本文由用户上传,如有侵权请联系删除!