- 1、本文档共7页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数据结构实验报告
实验名称:多项式加减法
学号:19
姓名:林强
实验日期:一、实验目的
通过实现多项式的加减法,对链表有更深入的了解
二、实验具体内容
1、实验题目1 :
题目设计一个一元稀疏多项式简单的加减法计算器
实现要求:
一元稀疏多项式简单计算器的基本功能是:
输入并建立多项式:
A(x) 7 3x 9x8 5x17 ;
B(x) 8x 22x7 9x8
输出多项式
多项式A和B相加,建立多项式 C= A+ B,并输出相加的结果多项式 C
选作:多项式 A和B相减,建立多项式 C= A- B,并输出相加的结果多项式 D
分析
1:本程序的任务是实现两个多项式的加法其中多项式的系数为浮点型,
指数为整数,输出的结果也为系数和指数。
(1 )输入的形式和输入值的范围:
输入多项式的系数 a和未知数X的指数b,当a和b都为零时,输入结束。输入值的范围: a为实数,b为整数。
输出形式:输出多项式的系数和多项式未知数 X的指数即(a,b)形式。
程序所能达到的功能,实现两个多项式的加法,并输出最后的结果
2:
整个程序运行期间实行动态创建节点,一边输入数据,
一边创建节点当将全部数据输入到单链表中后再调用多项式加法这
个函数,并一边实现多项式的相加,一边释放节点,有效防止了
在程序反复运行过程中可能出现系统空间不够分配的现象
(3 )实验代码
typedef int Status;
#define OVERFLOW -1
#define null 0
typedef struct Lnode{
float coef; //
存储项系数
int expn;//
存储项指数
struct Lnode *next;
}Lnode,*LinkList;
typedef LinkList polynomial;
Status InitList_L(LinkList L) {//
初始化头节点
L=(LinkList)malloc(sizeof(Lnode)); if(!L)
return(-1);
L-next=null;
return 1;
}
void AddPolyn(polynomial pa, polynomial pb){
//实现两个多项式相加的算法
float x;
polynomial qa;
polynomial qb;
polynomial s;
polynomial u;
qa=pa-next; qb=pb-next; s=pa;
while(qaqb){
if(qa_expnqb_expn){
s=qa;
qa=qa-next;
}
else if(qa-expn==qb-expn){
x=qa-coef+qb-coef;
if(x!=0){
qa-coef=x;
s=qa;
qa=qa_next;
u=qb;
qb=qb-next;
free(u);
}
else{
s-next=qa-next;
free(qa);
qa=s-next;
u=qb;
qb=qb-next;
free(u);
}
}
else if(qa-expnqb-expn){
u=qb-next;
s-next=qb;
s=qb; qb-next=qa;
qb=u;
}
}
if(qb)
qa-next=qb; free(pb);
}
void main(){
float a;
int b;
polynomial L1;
polynomial L2;
LinkList q;
LinkList p;
LinkList m;
LinkList n;
lnitList_L(L1);
q=L1;
InitList_L(L2);
p=L2;
coutvv
请输入数据:
vvendl;
for(;;){
cin?a;
cin?b;
if(a==Ob==0)
break;
m=new Lnode;
m_coef=a;
m_expn=b;
q_next=m;
q=m;
q-next=null;
}〃
循环输入第一个多项式的系数与指数
for(;;){
cina;
cinb;
if(a==0b==0)
break;
n=new Lnode;
n-coef=a;
n-expn=b;
p-next=n;
p=n;
p-next=null;
}//
循环输入第二个多项式的系数与指数
AddPolyn(L1, L2);//
调用多项式相加的算法
while((L1-next)!=null){
coutvv(vvL1-next-coefvv,vvL1-next-expnvv)vv;
L1=L1-next;
}//
输岀计算结果
}
三、实验小结
通过编写多项加法这个程序,我将自己所学到的创建链表,
初始化链表和多项式加法算法都应用了一次,这使我们不仅仅只
文档评论(0)