首页 > 编程知识 正文

数据结构有汇编语言机器语言,数据结构算法go语言版

时间:2023-05-05 02:45:17 阅读:178102 作者:4893

通常可以将一元多项式写为an(x )=a1x^e1 a2x^e2 a3x^e3 . amx^em。 其中,pi是指数为ei的项的非零系数,0=e1 e2 . em=n .可以用线性表表示

例如:

an(x )=5x^3 - 2x^12 13x^99。 线性表:()、3 )、(-2,12 )、(13,99 ) )来表示。

为了便于操作,采用单链表作为存储结构,节点有系数、指数、指针三个域。 存储结构如下。

typedefstructpolynomial { float coef; //系数. int expn; //指数:常见的幂都是整数,这里不考虑小数. struct Polynomial *next; }Polynomial,*Polyn; 算法实现的具体思路在此不再赘述。 在下面放置代码。 哪里有不明白的地方可以在评论区评论,第一时间看到回复。 完整的代码如下所示。

# include stdio.h # include stdlib.htypedefstructpolynomial { float coef; //系数. int expn; //指数:常见的幂都是整数,这里不考虑小数. struct Polynomial *next; }Polynomial,*Polyn; Polyn Create_Polyn (; //尾插入法多项式. void print _ polyn (polynomial * head ); //打印多项式. polynadd_polyn(polynomial*pa,Polynomial *pb ); //多项式加法. polynsuberact _ polyn (polynomial * pa,Polynomial *pb ); //多项式减法. int main () {Polynomial *pa,*pb,*pc,*pd; //--------- -创建多项式----------- -请输入多项式pa的每个系数和指数(以0结尾) ) )。 pa=Create_Polyn (; printf ('请输入多项式pb的每个系数和指数()输入0结束) :(n ) ); pb=Create_Polyn (; //----------------/printf (() ) ) ) ) )多项式: pa=' ) )。 print_Polyn(pa; printf (多项式(: pb=); print_Polyn(Pb; ------------------一元多项式的加法--------- -多项式pa和pb之和为: print_Polyn(PC; ------------------一元多项式减法-------------多项式pa和pb之差为--- -的PD=susu print_Polyn(PD; 打印((n ); 返回0; ) }Polyn Create_Polyn ()//用后推法创建多项式. {Polynomial *head,*rear,*s; int c,e; head=(polyn ) malloc (sizeof ) polynomial ); 读头; /*rear总是指向链接列表的末尾,便于用末尾插入法制作表格。

*/scanf('%d,%d ',c,e ); /*多项式的系数和指数项*/while(c!=0) (/*c=0表示多项式输入结束(/s=) polyn ) malloc ) sizeof(polynomial )。 s-coef=c; s-expn=e; rear-next=s; /*尾插*/rear=s; scanf('%d,%d ',c,e ); } rear-next=NULL; /*使表中最后一个节点的next为NULL*/return head; } void print _ polyn (polynomial * head )/*打印多项式. */{Polyn q=head-next; int flag=1; if (! q ) Putchar('0); 打印((n ); 返回; (while ) q ) if ) q-coef 0标志!=1()/*多项式中的任何一个系数大于0,输出编号) */putchar (' ); (if )问答!=1 q-coef!=-1 ) (/*多项式系数不是正负1*/printf )、q-coef )。 /*%g表示在%f%e中以较短的输出宽度输出单精度实数*/if(q-Expn==1) putchar ) ' x ' )。 /*指数为1时,输出x*/elseif(q-Expn ) printf ) ) x^%d )、q-expn ); /*指数不是1,输出x^%d格式*/}else{if(q-coef==1) )/*系数为1*/if (! q-expn ) putchar('1); elseif(q-Expn==1) putchar ) ) x ); ELSEprintf(x^%d )、q-expn ); (if ) q-coef==-1 ) (/*系数为-1*/if (! q-expn ) printf('-1 ' ); elseif(q-Expn==1) printf(-x ); ELSEprintf(-x^%d )、q-expn ); }}q=q-next; 闪光灯; }printf((n ); }polynadd_polyn(polynomial*pa,Polynomial *pb ) /多项式加法. {Polyn qa=pa-next; Polyn qb=pb-next; Polyn headc,pc,qc; PC=(polyn ) malloc ) sizeof ) polynomial ); /*单链接列表pc包括用于存储pa、pb的列表以及*/pc-next=NULL; 头儿=PC; QA!=空QB!=null(/*如果两个多项式的扫描都无法完成(/) QC=(polyn ) malloc(sizeof(polynomial ) ); if(QA-expnQB-expn )/pa的指数项小于pb的指数项(/) QC-coef=QA-coef; qc-expn=qa-expn; qa=qa-next; }如果}elseif(QA-Expn==QB-Expn )/*指数项相同(/(QC-coef=QA-coefQB-coef; qc-expn=qa-expn; /*当然qb-expn*/qa=qa-next; qb=qb-next; }else{/*pb的指数项小于pa的指数项*/qc-coef=qb-coef; qc-expn=qb-expn; qb=qb-next; (if ) QC-Coef!=0) {qc-next=pc-next; pc-next=qc; pc=qc; (elsefree ) QC; }while(QA!=null((/*pa中存在剩余项目,将剩余项目插入pc )/QC=(polyn ) malloc(sizeof ) polynomial ); qc-coef=qa-coef; qc-expn=qa-expn; qa=qa-next; qc-next=pc-next; pc-next=qc; pc=qc; }while(QB!=null((/*Pb中存在剩余项目,将剩余项目插入pc )/QC=(polyn ) malloc(sizeof ) polynomial ); qc-coef=qb-coef; qc-expn=qb-expn; qb=qb-next; qc-next=pc-next; pc-next=qc; pc=qc; }return headc; } polynsuberact _ polyn (polynomial * pa,Polynomial *pb ) /多项式减法. {Polyn h=pb; Polyn p=pb-next; Polyn pd; 因为while(p ) (/) pa (-pb )等于pa )-pb ),所以循环扫描Pb多项式各代码的变量)/p-coef )=-1; p=p-next; }PD=add_Polyn(pa,h ); /*使用创生函数Add_Polyn ()执行pa(-Pb ) (即相减)/for ) p=h-next; p; 执行p=p-next(/*pa(-pb ) )后,进行循环遍历,将Pb的符号全部变更为之前的状态(/p-coef )=-1。 }return pd; }自由输入一系列数据后,将显示以下结果。

谢谢您的浏览。 如果哪里写了问题的话,谢谢您的指出。

参考:数据结构与算法-仁爱可乐主编版。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。