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

c++多项式加法 链表

发布网友 发布时间:2022-05-16 18:10

我来回答

5个回答

热心网友 时间:2023-11-15 19:41

N久之前写过这个题,居然被我翻出来了~~仅数组完成,无结构体无类,稍微改下即可~~

#include "iostream"

using namespace std;

#define N 10

void Input(int X[],int Z[],int *n);

void Show(int X[],int Z[],int n);

void Add(int XA[],int ZA[],int nA,int XB[],int ZB[],int nB,int XC[],int ZC[],int *nC);

void Sort(int X[],int Z[],int n);

int main() 

{

 int HAshu[N]={0};

 int HAxishu[N]={0};

 int HBshu[N]={0};

 int HBxishu[N]={0};

 int HCshu[2*N]={0};

 int HCxishu[2*N]={0};

 int HAn=0,HBn=0,HCn=0;

 Input(HAxishu,HAshu,&HAn);

 Sort(HAxishu,HAshu,HAn);

 Show(HAxishu,HAshu,HAn);

 Input(HBxishu,HBshu,&HBn);

 Sort(HBxishu,HBshu,HBn);

 Show(HBxishu,HBshu,HBn);

 Add(HAxishu,HAshu,HAn,HBxishu,HBshu,HBn,HCxishu,HCshu,&HCn);

 Sort(HCxishu,HCshu,HCn);

 cout<<"\n两个多项式相加为:\n";

 Show(HCxishu,HCshu,HCn);

 system("pause");

 return 0;

}

void Input(int X[],int Z[],int *n)

{

 int i,count=0;

 cout<<"请输入多项式的(系数  指数),(0 0)为结束:\n";

 int xishu,shu;

 while(1)

 {

  cin>>xishu>>shu;

  if(shu==0 && xishu==0)

   break;

  for(i=0;i<count;i++)

  {

   if(Z[i]==shu)

    break;

  }

  if(i>=count) count++;//如果本来没有存在该指数

  Z[i]=shu;

  X[i]+=xishu;

  if(count>=N)

  {

   cout<<"输入超过指定项数,自动结束\n";

   break;

  }

 }

 *n=count;

 cout<<"多项式输入完毕!\n";

}

void Show(int X[],int Z[],int n)

{

 for(int i=0;i<n-1;i++)

 {

  if(X[i]!=0)

   cout<<"("<<X[i]<<"X^"<<Z[i]<<") + ";

 }

 cout<<"("<<X[i]<<"X^"<<Z[i]<<")\n";

}

void Add(int XA[],int ZA[],int nA,int XB[],int ZB[],int nB,int XC[],int ZC[],int *nC)

{

 int i,j,count=0;

 for(i=0;i<nA;i++)

 {

  for(j=0;j<count;j++)

  {

   if(ZC[j]==ZA[i])

    break;

  }

  if(j>=count) count++;//如果本来没有存在该指数

  ZC[j]=ZA[i];

  XC[j]+=XA[i];

 }

 for(i=0;i<nB;i++)

 {

  for(j=0;j<count;j++)

  {

   if(ZC[j]==ZB[i])

    break;

  }

  if(j>=count) count++;//如果本来没有存在该指数

  ZC[j]=ZB[i];

  XC[j]+=XB[i];

 }

 *nC=count;

}

void Sort(int X[],int Z[],int n)

{

 int i,j,temp;

 for(i=0;i<n;i++)

  for(j=0;j<n-i-1;j++)

   if(Z[j]<Z[j+1])

   {

    temp=Z[j];Z[j]=Z[j+1];Z[j+1]=temp;

    temp=X[j];X[j]=X[j+1];X[j+1]=temp;

   }

}

热心网友 时间:2023-11-15 19:41

#include<iostream>
using
namespace
std;
struct
Multi
{
long
nf;
int
ne;
Multi
*next;
}**add,*sum;
void
input()
{
add=new
Multi*[2];
for(int
n=0;n!=2;n++)add[n]=new
Multi[11];
for(int
i=0;i!=2;i++)
for(int
a=1;;a++)
{
cin>>add[i][a].nf>>add[i][a].ne;add[i][a].next=&add[i][a+1];
if(add[i][a].nf==0
&&
add[i][a].ne==0)
{
if(a==1){add[i][a].next=NULL;break;}
add[i][a-1].next=NULL;break;
}
else
if(a==10)
{
add[i][a].next=NULL;break;
}
}
add[0][0].next=&add[0][1];
add[1][0].next=&add[1][1];
}
void
prt(Multi
*headp)
{
bool
fir=0;
while(headp->next!=NULL)
{
headp=headp->next;
if(headp->nf==0);
else
if(headp->nf<0
||
fir==0){cout<<headp->nf<<"x"<<"^"<<headp->ne;fir=1;}
else
if(headp->nf
>0){cout<<"+"<<headp->nf<<"x"<<"^"<<headp->ne;fir=1;}
}
if(fir==0)cout<<"0";
cout<<endl;
}
void
sort(Multi
*headp)
{
Multi
*pedo=headp;
while(pedo->next!=NULL)
{
Multi
*min=pedo->next,*m=pedo->next,*premin=pedo;
while(m!=NULL
&&
m->next!=NULL
)
{
if(min->ne
>
m->next->ne)
{
premin=m;min=m->next;
}
else
if(min->ne==m->next->ne)
{
min->nf=min->nf+m->next->nf;
m->next=m->next->next;
}
m=m->next;
}
premin->next=min->next;
min->next=pedo->next;
pedo->next=min;
pedo=pedo->next;
}
}
void
addf()
{
int
a;
sum=new
Multi[21];
sum[0].next=∑[1];
Multi
*ad1=&add[0][1],*ad2=&add[1][1];
for(a=1;ad1!=NULL;a++)
{
sum[a].ne=ad1->ne;sum[a].nf=ad1->nf;
ad1=ad1->next;
}
for(;ad2!=NULL;a++)
{
sum[a].ne=ad2->ne;sum[a].nf=ad2->nf;
ad2=ad2->next;
}
for(int
b=1;b!=a;b++)
{
sum[b].next=∑[b+1];
}
sum[a-1].next=NULL;
}
void
go()
{
input();
sort(&add[0][0]);sort(&add[1][0]);
prt(&add[0][0]);prt(&add[1][0]);
addf();
sort(∑[0]);
prt(∑[0]);
for(int
a=0;a!=2;a++)
delete[]
add[a];
delete[]
add;
a=NULL;
delete[]
sum;
sum=NULL;
}
int
main()
{
char
ct='y';
while(ct!='n')
{
go();
cout<<"countinue?"<<endl;
cin>>ct;
}
return
0;
}
注意:
取sum的地址变成了

!
!!
void
sort(Multi
*headp)
排序并相加是相同指数的
void
prt(Multi
*headp)
输出
并去系数为0的
void
input()
输入
并判断输入ne,nf都为0结束
void
addf()
简单相加add[0]和add[1]
到sum
不对相同指数的做处理
void
go()
循环开始

热心网友 时间:2023-11-15 19:42

#include<iostream>
using namespace std;

struct Multi
{
long nf;
int ne;
Multi *next;
}**add,*sum;

void input()
{
add=new Multi*[2];
for(int n=0;n!=2;n++)add[n]=new Multi[11];

for(int i=0;i!=2;i++)
for(int a=1;;a++)
{
cin>>add[i][a].nf>>add[i][a].ne;add[i][a].next=&add[i][a+1];
if(add[i][a].nf==0 && add[i][a].ne==0)
{
if(a==1){add[i][a].next=NULL;break;}
add[i][a-1].next=NULL;break;
}
else if(a==10)
{
add[i][a].next=NULL;break;
}
}
add[0][0].next=&add[0][1];
add[1][0].next=&add[1][1];
}

void prt(Multi *headp)
{
bool fir=0;
while(headp->next!=NULL)
{
headp=headp->next;
if(headp->nf==0);
else if(headp->nf<0 || fir==0){cout<<headp->nf<<"x"<<"^"<<headp->ne;fir=1;}
else if(headp->nf >0){cout<<"+"<<headp->nf<<"x"<<"^"<<headp->ne;fir=1;}
}
if(fir==0)cout<<"0";
cout<<endl;
}

void sort(Multi *headp)
{
Multi *pedo=headp;
while(pedo->next!=NULL)
{
Multi *min=pedo->next,*m=pedo->next,*premin=pedo;
while(m!=NULL && m->next!=NULL )
{
if(min->ne > m->next->ne)
{
premin=m;min=m->next;
}
else if(min->ne==m->next->ne)
{
min->nf=min->nf+m->next->nf;
m->next=m->next->next;
}
m=m->next;
}
premin->next=min->next;
min->next=pedo->next;
pedo->next=min;

pedo=pedo->next;
}
}

void addf()
{
int a;
sum=new Multi[21];
sum[0].next=∑[1];
Multi *ad1=&add[0][1],*ad2=&add[1][1];
for(a=1;ad1!=NULL;a++)
{
sum[a].ne=ad1->ne;sum[a].nf=ad1->nf;
ad1=ad1->next;
}
for(;ad2!=NULL;a++)
{
sum[a].ne=ad2->ne;sum[a].nf=ad2->nf;
ad2=ad2->next;
}
for(int b=1;b!=a;b++)
{
sum[b].next=∑[b+1];
}
sum[a-1].next=NULL;

}

void go()
{
input();
sort(&add[0][0]);sort(&add[1][0]);
prt(&add[0][0]);prt(&add[1][0]);
addf();
sort(∑[0]);
prt(∑[0]);
for(int a=0;a!=2;a++)
delete[] add[a];
delete[] add;
a=NULL;
delete[] sum;
sum=NULL;
}

int main()
{
char ct='y';
while(ct!='n')
{
go();
cout<<"countinue?"<<endl;
cin>>ct;
}
return 0;
}

注意: 取sum的地址变成了 ∑ ! !!

void sort(Multi *headp) 排序并相加是相同指数的
void prt(Multi *headp) 输出 并去系数为0的
void input() 输入 并判断输入ne,nf都为0结束
void addf() 简单相加add[0]和add[1] 到sum 不对相同指数的做处理
void go() 循环开始

热心网友 时间:2023-11-15 19:42

include <iostream>
using namespace std;
int main()
{
int i,j;
for (i=1,j=1;j<=9;j++)
{
i=1;
cout<<i<<"*"<<j<<"="<<i*j<<" ";
for (;i<j;)
{
i++;

cout<<i<<"*"<<j<<"="<<i*j<<" ";

} cout<<endl;
}

return 0;
}

热心网友 时间:2023-11-15 19:43

贴上你的邮箱,我传给你
用C语言实现数据结构的题目:一元多项式相加

如: 1 1 2 2 3 3 0 0 2 2 3 3 0 0 结果:1 1 4 2 6 3 include &lt;stdio.h&gt; include &lt;malloc.h&gt; struct poly //设置结构体 { int xi;int zhi;struct poly *next;};struct poly *jianli(void) //建立链表 { struct poly *p1,*head1,*p2;head1=(struct poly*)malloc(siz...

使用链表完成一个整数计算器,该计算器需包含整数的加法、减法、乘法功...

struct node *next;}PolyNode; //多项式节点 polynomial node 多项式的加法我们提供了两种:1.Polynomial polyAdd(Polynomial poly1, Polynomial poly2),把poly1和poly2相加得到一个新的多项式。相加的过程中poly1和poly2保持不变,不会被破坏。2.void add(Polynomial poly1, Polynomial poly2),把pol...

...个程序用单链表存储多项式,并实现两个多项式相加的函数?

int coef; //多项式系数 int exp; //多项式指数 //初始化项的系数和指数 term( int c=0,int e=0):coef(c),exp(e){} };//定义多项式类 class PolyArith { private:list&lt;term&gt; m_poly_list_first; //存储第一个多项式 list&lt;term&gt; m_poly_list_second; //存储第二个多项...

数据结构要求做个多项式计算器 用C语言 哪位高人有代码谢谢

(1) 用带表头结点的单链表存储多项式;(2) 多项式的每一项为一个结点,数据类型ElemType为结构体,包含两个数据成员:系数和指数;(3) 输入时依次输入多项式每一项的系数和指数,注意结束条件;(4) 输出时注意两项之间加号或减号的处理;(5) 使用Lab2-2实现的单链表ADT基本操作完成本次作业 ; 展开  我来答 2个...

急解一个数据结构的题(C语言)

{ /* 多项式加法:Pa=Pa+Pb,并销毁一元多项式Pb */ Position ha,hb,qa,qb; term a,b; ha=GetHead(*Pa); hb=GetHead(*Pb); /* ha和hb分别指向Pa和Pb的头结点 */ qa=NextPos(ha); qb=NextPos(hb); /* qa和qb分别指向Pa和Pb中当前结点(现为第一个结点) */ while(!ListEmpty(*Pa)&amp;&amp;!List...

c++编程 多项式的乘法

void num(formula *m);//计算多项式的数值void show(formula *m);//显示多项式formula *mul(formula *m,formula *n);//多项式的乘法struct formula{ double a; int i; formula *next;};//链表,用于形成多项式void main(){ system("color 3e"); formula *s1,*s2,*snum;cout&lt;&lt;"程序开始了"&lt;&lt;endl;...

一元多项式加法 程序改错 大虾救命啊!课程设计 要交了

{/*输入m象的系数和指数,建立表示一元多项式的有序链表p*/ polynode *r,*h,e,*c,*c_pre;p=InitList(p);/*初始化线形链表p*/ h=GetHead(p);/*得到头结点*/ r=h;for(int i=1;i&lt;=m;i++){/*依次输入m个非零项*/ cout&lt;&lt;"Coef:";cin&gt;&gt;e.coef;cout&lt;&lt;"Expn:";cin&gt;&gt;e....

一元稀疏多项式计算器 用C语言实现加法,减法,乘法

已经发给你,注意查收

链表多项式相加算法 用链表做两个多项式加法 c语言链表多项式乘法 c语言链表一元多项式相加 多项式链表乘法 多项式相加链表 用链表实现多项式相加 用链表完成多项式相加 一元多项式用链表表达
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
足金和黄金的区别哪个贵 梦幻西游155飞升龙宫,是不技能到160,就能全体攻击了?还是要渡劫之类的... 梦幻西游155渡劫龙应该多少灵 联想Y460能不能推得起DT235,想买个300左右还不错得耳机在电脑用的,还... 请教大家,女生用苹果的MP3 P4想配副头戴式耳机常用于听英语,只求佩戴舒 ... 悬赏100!漫步者H800,AKG K99 K512,拜亚DT131 DT235该选哪个? 拜亚动力DT235和AKG k99有木有了解的孩子来帮忙做个抉择┭┮﹏┭┮... 千足金和黄金谁更贵 黄金跟足金哪个贵 黄金和千足金哪个贵 日本舞蹈的新舞蹈运动 许嵩走了我还要听谁的音乐? 小米系列的低价手机哪个可以媲美vivox6? 我想学miryo的《dirty》。不会唱,所有帮我搞搞歌词。谢谢 走音乐需要怎么走? 从此他走上了音乐的道路英语怎么翻译 时间过了走了爱情面临选择是什么歌,什么歌曲的歌词 求郑怡-亲爱的我走了mp3音乐百度云 用asp实现只有输入学号和姓名同时正确时才给出查询结果的方法 难过的是你走了走了前面纯音乐 td数据库如何执行选中的sql 什么金属烧后是黄色粉末 求电视剧《七日》主题曲《走了》音乐 求宁远的时光gl 百度云 谁知道TANK的资料 ?以及歌曲下载网址? 求一个真三国无双版 三国恋和曹操 的歌曲视频!下载地址? 有谁知道反渗透冷热一体的净水机吗? 三国恋战记 少女的兵法汉化在哪下载 三国恋tank 哪个播放器可以下载 有许多歌都不可以下载了 长虹净水器冷热一体机四个滤芯安装顺序 老公我走了背景音乐 迈克尔杰克逊走了,还剩下多少熟悉的音乐? 急求3d max8.0激活码 好看的古代言情小说,文笔好的,不要幼稚白痴文,像蔓蔓青萝那种的,邮箱是doudingzhaona@126.com 新文化运动对中国“新舞蹈”有哪些影响? 走音乐路需准备什么? 五四新文化运动之后,舞蹈届掀起了什么运动? 当代舞的简介 当代舞与现代舞有什么区别? 网络考试源代码,看这个能找到答案吗? 预防晕车,肚脐上贴一些陈皮到底有没有效果呢? 鞭炮的鞭字怎么组词呢 程序题目 现在走音乐这条路一定是死路一条吗? 试题单〈 A卷〉 考试时间: 月 日 第 1 页,共 4 页 单项选择题(每小题2分,共24分)下列各题A、B、C、D 矩,饺,鞭的组词 急 谢谢 中国发现真正的迅猛龙,到底是什么样的,并未演化成“全家桶套餐”? 易语言源码,要求把考试日期,考试科目,考试场次,预约ID,取到超级列表框里面去.谢谢了.易语言.正则表达式. 求当代舞的历史进程 走表演还是走音乐?