问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

C语言 多项式相加

发布网友 发布时间:2022-05-27 16:00

我来回答

2个回答

热心网友 时间:2023-11-01 14:36

/*为了一元多项式相加能够使用效率更高的算发,应该在多项式的排序操作中加入合并同类项,除非你可以保证输入不含有同类项*/
/*今天就这些吧,明天争取写出来,走了!*/
#include<stdio.h>
#include<stdlib.h>
typedef struct DXS{
float xs;
int zs;
struct DXS *next;
} multinomial;
//输入函数
multinomial *input(void)
{
multinomial *p,*h;
h=NULL;
printf("please input the xs and zs of the DXS:\n");
for(;;)
{
p=(multinomial *)malloc(sizeof(multinomial));
scanf("%f %d",&p->xs,&p->zs);
if(p->xs==0 && p->zs==0){free(p);break;}
p->next=h;
h=p;//从头部插入,没有问题
}
return(h);
}
//将多项式排序

multinomial *inorder(multinomial *h)
{
multinomial *s,*t,*m,*h3;
h3=h->next;//指向第二个结点
h->next=NULL;//拆下第一个结点,为什么?
while(h3!=NULL)
{
s=h3;
h3=h3->next;
t=h;
m=h;
while(s->zs<t->zs&&t!=NULL)
{
m=t;
t=t->next;
}
if(m=t)
{s->next=t;
h=s;
}
else
{
s->next=t;
m->next=s;
}
}
return(h);
}
//两个多项式相加
multinomial *add(multinomial *h1,multinomial *h2)
{
multinomial *u,*v,*w,*j;
w=h2;j=h2;
while(j!=NULL)
{
u=v=h1;w=j;
while(u->zs>w->zs&&u!=NULL)
{v=u;
u=u->next;
}
if(u->zs==w->zs) //指数相同,则系数相加
{
u->xs=u->xs+w->xs;
if(u->xs==0) //如果系数为0,则做删除操作
{
if(u=v) //删除表头
h1=h1->next;
}
else if(u->next==NULL) // 删除表尾
v=NULL;
else //删除表中
{
u=u->next;
}
}

else if(u=v) //待插入点在在表头
{
w->next=u;
h1->next=w;
}
else //待插入点不是在表头
{
w->next=u;
v->next=w;
}

j=j->next;
}
return(h1);
}

void print(multinomial *h1)
{
printf("f(x)=");
while(h1!=NULL)
{

printf("%f",h1->xs);
if(h1->zs!=0)
printf("x^%f",h1->xs);
else printf("%f",h1->xs);
h1=h1->next;
if(h1!=NULL&&h1->xs>0)
printf("+");
}
}

void main()
{multinomial *h1,*h2;
printf("输入第一个多项式的系数和指数(系数与指数之间用空格号隔开)");
h1=input();
printf("输入第二个多项式的系数和指数(系数与指数之间用空格号隔开");
h2=input();
h1=inorder(h1);
h2=inorder(h2);
h1=add(h1,h2);
print(h1);
}

热心网友 时间:2023-11-01 14:37

发现第一个问题:
input()函数的
p->next=h;
h=p;
有问题, 链表没有连上
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
火影忍者手游怎么都有蛤蟆仙人了 我只是忘了忘记你图书目录 我只是忘了忘记你作者简介 我只是忘了忘记你内容简介 对《我只是忘了忘记你》进行评价! 多肉有什么作用和功效 多肉的好处 多肉植物的好处和坏处没毒的多肉植物有哪些 大学生创业哪些要素最关键优秀团队和心理素质 大学生创业的关键要素 沈阳市于洪区沙岭镇去道义开发区做什么车 用c语言编程多项式计算?急!急!急!急 C语言程序设计——多项式求和 题目:用C语言编程多项式计算 多项式计算 C语言编程 海城市办房产证费用,加过户费用,马上办,马上过 关于链表的c语言程序 C语言关于链表的程序 论文答辩问题: 广西民大论文答辩每个人一般多少分钟时间?一般问几个问题?我是汉语言文学专业的,写作学 白色的门配什么颜色的壁纸 羽毛球世界杯新赛制好吗? 毕业答辩,汉语言文学专业,答辩老师提问什么 白色卧室门搭配什么壁纸最好看 正在装修房子,现代简约风格,已经订了纯白色的门,墙壁该用什么颜色呢? 卧室门是白色适合贴什么颜色的壁纸 门的颜色(白色门搭配哪种颜色好看 在赛尔号之梦幻纪元中主角的孩子是谁的? 自考汉语言文学论文答辩的问题 白色的实木门,配什么颜色的壁纸? 白色实木门搭配什么壁纸最好看 白色室内门配什么颜色壁纸 二级C语言编程 计算多项式的和 C语言 简单多项式的求值 题目是:对用户输入的任一整数,输出以下多项式 y=2x的平方+x C语言程序题:编写程序实现多项式计算 用c语言编程计算多项式1-2+3-…2*n+1的和,n由用户输入 一元多项式计算C语言 用C语言编程:输入两个多项式的各项系数和指数,编写程序求出他们的和,并要求与手写习惯相同的格式输出 求用C语言编写求两个一元多项式相乘的代码 ★C语言 编写函数,输出下述多项式的值 用c语言编以下的一元多项式,附了一些链表的代码,帮我写个完整能运行出题目结果的程序出来 急求用C语言编一个多项式的四则运算+ C语言写多项式相加怎么写 急求用C语言编一个多项式的四则运算+-*/? 推断“补天遗石”“木石前盟”“太虚幻境”这三个神话传说的作用。 空气能热水器三相电 空气能用两相电还是三相电 空气能热泵能使二相电吗,我想安装空气能热泵,可是大队不给接三相电,没有办法。 空气能热水器两相接220 一相接380 可行吗 空气能热水器是380还是220 空气能热水器三能合一的好还是单一空气能的好? 3P空气能热水器水温55度的时候是多少个电流