一元稀疏多项式简单计算器数据结构:一元稀疏多项式相加 设计一个一元多项式加法器.实现:(1)输入并建
答案:2 悬赏:80 手机版
解决时间 2021-02-23 16:46
- 提问者网友:孤山下
- 2021-02-23 04:56
一元稀疏多项式简单计算器数据结构:一元稀疏多项式相加 设计一个一元多项式加法器.实现:(1)输入并建
最佳答案
- 五星知识达人网友:毛毛
- 2021-02-23 06:19
除以上功能外,还有乘法和除法的计算和导数计算呢.这是我以前做的数据结构课程设计.希望能帮上你的忙.#include#includetypedef struct Polynomial{float coef;int expn;struct Polynomial *next;}*Polyn,Polynomial; //Polyn为结点指针类型void Insert(Polyn p,Polyn h){ if(p->coef==0) free(p); //系数为0的话释放结点else{ Polyn q1,q2; q1=h;q2=h->next; while(q2&&p->expnexpn){ //查找插入位置 q1=q2; q2=q2->next; } if(q2&&p->expn==q2->expn){ //将指数相同相合并 q2->coef+=p->coef; free(p); if(!q2->coef){ //系数为0的话释放结点 q1->next=q2->next; free(q2); } } else{ //指数为新时将结点插入 p->next=q2; q1->next=p; }}}//InsertPolyn CreatePolyn(Polyn head,int m){//建立一个头指针为head、项数为m的一元多项式int i;Polyn p;p=head=(Polyn)malloc(sizeof(struct Polynomial));head->next=NULL;for(i=0;i p=(Polyn)malloc(sizeof(struct Polynomial));//建立新结点以接收数据 printf(请输入第%d项的系数与指数:,i+1); scanf(%f %d,&p->coef,&p->expn); Insert(p,head); //调用Insert函数插入结点}return head;}//CreatePolynvoid DestroyPolyn(Polyn p){//销毁多项式pPolyn q1,q2;q1=p->next;q2=q1->next;while(q1->next){ free(q1); q1=q2;//指针后移 q2=q2->next;}}void PrintPolyn(Polyn P){ Polyn q=P->next; int flag=1;//项数计数器if(!q) { //若多项式为空,输出0 putchar('0'); printf(\n); return;} while (q){ if(q->coef>0&&flag!=1) putchar('+'); //系数大于0且不是第一项 if(q->coef!=1&&q->coef!=-1){//系数非1或-1的普通情况 printf(%g,q->coef); if(q->expn==1) putchar('X'); else if(q->expn) printf(X^%d,q->expn); } else{ if(q->coef==1){ if(!q->expn) putchar('1'); else if(q->expn==1) putchar('X'); else printf(X^%d,q->expn); }
全部回答
- 1楼网友:妄饮晩冬酒
- 2021-02-23 06:55
我好好复习下
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯