数据结构_一元稀疏(加减乘法)计算器
来源:互联网 发布:window安装mac双系统 编辑:程序博客网 时间:2024/06/05 23:52
符号多项式的操作,可以使用链表进行实现。在数学上,一个一元多项式P(x)可以按照升幂写为P(x)=p0+p1x+p2x^2+.....+pnx^n
它有n+1个系数唯一确定,相似的我们在计算机中可以使用线性表来表示:
P=(p0,p1,p2,p3,.....pn)每一项的指数i包含在系数Pi的序号中;
同理Q(m)也可以使用相同的方法来表示;
对此加减乘都可以轻松解决;为了计算方便以及内存占用问题,我们采用链式存储结构;
在计算过程中:我们需要对不同幂次的系数进行排序,这样才便于下一步的计算;
项目功能:
• 用VC实现两个一元多项式的加减乘
• 能够实现一元多项式的输入和输出
• 能够进行一元多项式相加
• 能够进行一元多项式相减
• 能够进行医院多项式相乘
• 能够支持多次实现
typedef struct node
{
float c;
int e;
struct node *next;
}dnode;
项目涉及到的基本算法:
1:显示算法:
void display(dnode *P){
dnode *q=P->next;
int flag=1;//项数计数器
if(!q)
{ //若多项式为空,输出0
putchar('0');
printf("\n");
return;
}
while(q)
{
if(q->c>0&&flag!=1) putchar('+'); //系数大于0且不是第一项
if(q->c!=1&&q->c!=-1)
{//系数非1或-1的普通情况
printf("%g",q->c); //
if(q->e==1) putchar('X');
else if(q->e) printf("X^%d",q->e);
}
else
{
if(q->c==1)
{
if(!q->e) putchar('1');
else if(q->e==1) putchar('X');
else printf("X^%d",q->e);
}
if(q->c==-1)
{
if(!q->e) printf("-1");
else if(q->e==1) printf("-X");
else printf("-X^%d",q->e);
}
}
q=q->next;
flag++;
}
printf("\n");
}
2:交换算法:
void swap(dnode *p,dnode *q){
float t;
int k;
k=p->e; p->e=q->e;q->e=k;
t=p->c; p->c=q->c;q->c=t; //交换p与q的数值;
}
3:排序算法:
void sort(dnode *h) //按顺序排列;
{
dnode *p, *q,*pi, *pl;
p=h->next;
while(p->next!= NULL)
p=p->next;
pi=p;
while(pi!=h->next)
{
pl=h->next;
for(p=h->next;p!=pi;p=p->next)
{
q=p->next;
if(p->e>q->e){
swap(p,q);
pl=p;
}
}
pi=pl;
}
}
4:插入算法:
void Insert(dnode *p,dnode *h){
if(p->c==0) free(p);
else
{
dnode *q1,*q2;
q1=h;
q2=h->next;
while(q2&&p->e<q2->e)
{
q1=q2;
q2=q2->next;
}
if(q2&&p->e==q2->e)
{
q2->c+=p->c;
free(p);
if(!q2->c)
{
q1->next=q2->next;
free(q2);
}
}
else
{
p->next=q2;
q1->next=p;
}
}
}
5:计算算法:
1):加减
比较简单,不再赘述!
2)乘法:
dnode *MultiplyPolyn(dnode *pa,dnode *pb){
dnode *hf,*pf;
dnode *qa=pa->next;
dnode *qb=pb->next;
hf= (dnode*)malloc(sizeof(dnode));
hf->next=NULL;
for(;qa;qa=qa->next)
{
for(qb=pb->next;qb;qb=qb->next)
{
pf= (dnode*)malloc(sizeof(dnode));
pf->c=qa->c*qb->c;
pf->e=qa->e+qb->e;
Insert(pf,hf);
}
}
return hf;
}
- 数据结构_一元稀疏(加减乘法)计算器
- 数据结构课程设计一元稀疏多项式计算器
- 一元稀疏多项式加减
- 一元稀疏多项式计算器
- 一元稀疏多项式计算器
- 一元稀疏多项式计算器:一次数据结构实验的题目
- 数据结构1——稀疏多项式乘法计算器
- 一元稀疏多项式加减法计算器
- c++实现一元稀疏多项式加减
- 数据结构-一元多项式加减程序
- 一元多项式的表示及加减乘法运算
- 一元稀疏多项式(加减法)
- 设计一个一元稀疏多项式简单的加减法计算器
- 设计一个一元稀疏多项式简单的加减法计算器
- [C/C++]OJ练习题:一元稀疏多项式计算器
- 数据结构C++实验之稀疏矩阵乘法
- 加减计算器(数电)
- 数据结构_稀疏矩阵转置(trans_sparse_matrix)
- js中eval函数对json格式数据的处理
- BATCHSQL--GoldenGate Parameter
- 多种设计模式核心思想对比
- javascript小白学习指南4--持续更新
- Sicily 1218. 纪念邮票
- 数据结构_一元稀疏(加减乘法)计算器
- 2016年送给自己10句暖心的话!
- hashcode存在的作用和价值
- 花指令基础
- 【学习笔记】HBuilder初学,简单结构体
- 面向对象<5>__笔记(15)
- MyBatis Generator 详解
- send()方法传递参数null的问题
- iOS的网络请求相关知识