数据结构课程设计报告一元稀疏多项式计算器Word格式.docx
- 文档编号:17491842
- 上传时间:2022-12-06
- 格式:DOCX
- 页数:9
- 大小:16.79KB
数据结构课程设计报告一元稀疏多项式计算器Word格式.docx
《数据结构课程设计报告一元稀疏多项式计算器Word格式.docx》由会员分享,可在线阅读,更多相关《数据结构课程设计报告一元稀疏多项式计算器Word格式.docx(9页珍藏版)》请在冰豆网上搜索。
7)互换上述测试数据中的前后两个多项式.
2.概要设计
ADTPolynomial{
数据对象:
D={ai|ai?
TermSet,i=1,2,…,m,m≥0,TermSet中的每个元素包含一个表示系数的实数和表示指数的整数}
数据对象:
R1={<
ai,ai-1>
|ai,ai-1?
D,且ai-1中的指数值小于ai中的指数,i=2,…,m}
基本操作:
CreatePolyn(void)
Result:
指数由大到小输入m项的系数和指数,建立一元多项式p
PrintPoly(LNodeHead)
输出一元多项式
AddPoly(LNodeH1,LNodeH2)
Condition:
一元多项式pa,pb已存在
完成多项式相加运算,即pa=pa+pb,并销毁一元多项式pb.
SubtractPoly(LNodeH1,LNodeH2)
完成多项式相减运算,即pa=pa-pb,并销毁一元多项式pb.
}ADTPolynomial
3.详细设计
【数据类型定义】
typedefstructnode{
intexpn,coef;
structnode*next;
}Nodetype,*LNode;
//定义结点类型
【函数原型定义】
LNodeCreatePolyn(void);
VoidPrintPoly(LNodeHead);
LNodeAddPolyn(LNodeH1,LNodeH2);
LNodeSubPolyn(LNodeH1,LNodeH2);
【核心算法描述】
CreatePolyn()
LNodeCreatePolyn(void)//创建表达式
{
LNodeHead,p,pre,pree;
intx,z;
Head=(LNode)malloc(sizeof(Nodetype));
Head->
next=NULL;
printf("
当你输入的系数为0时,输入将结束!
\n"
);
请输入第一项系数:
"
scanf("
%d"
&
x);
if(x==0)
{
p=(LNode)malloc(sizeof(LNode));
p->
coef=0;
expn=0;
next=p;
}
while(x!
=0)
请输入指数:
z);
p=(LNode)malloc(sizeof(Nodetype));
coef=x;
expn=z;
pre=Head;
while(pre->
next&
&
pre->
next->
expn>
=z)//原有项指数大于插入项
pree=pre;
pre=pre->
next;
next=pre->
//插入项
pre->
if(pre->
expn==p->
expn)//原有项指数等于插入项
coef+=p->
coef;
next=p->
free(p);
coef==0)//系数为0
pree->
free(pre);
请输入系数:
if(Head->
next==NULL)//多项式空
pre=(LNode)malloc(sizeof(LNode));
next=Head->
next=pre;
returnHead;
}
PrintPolyn()
voidPrintPolyn(LNodeHead)//输出表达式
{
LNodepre;
pre=Head->
expn==0)//指数为0
pre->
coef);
else
%d*X(%d)"
coef,pre->
expn);
while(pre)//系数不为0
coef>
0)
+%d"
elseif(pre->
coef<
else//指数不为0
+%d*X(%d)"
//遍历每一项
AddPolyn()
LNodeAddPolyn(LNodeH1,LNodeH2)//表达式相加
LNodeH3,p1,p2,p3,pre;
//p1第一个多项式的项,prep的前一项
H3=(LNode)malloc(sizeof(LNode));
H3->
//建立一个空的多项式
p1=H1->
//第一个多项式的第一项
p2=H2->
pre=H3;
//
while(p1&
p2)
if(p1->
p2->
expn)//第一个多项式的项的指数大于第二个的
p3=(LNode)malloc(sizeof(LNode));
p3->
expn=p1->
expn;
coef=p1->
next=p3;
pre=p3;
p1=p1->
elseif(p1->
expn<
expn)//第一个多项式的项的指数小于第二个的
expn=p2->
coef=p2->
p2=p2->
coef+p2->
coef!
=0)//相加为不0,指数相同系数相加
else//相加为0
}
while(p2)
while(p1)
returnH3;
Substract()
LNodeSubstractPolyn(LNodeH1,LNodeH2)//表达式相减
{//让系数变负,代入加法
LNodeH3,pre;
pre=H2->
while(pre)
coef=-pre->
H3=AddPolyn(H1,H2);
【函数调用关系】
main()调用CreatePoly(),PrintPoly(),AddPoly(),scanf()函数输入,printf()函数输出。
4.运行记录
5.总结
首次做课程设计的题目,小激动,小紧张,编程的基础比较差,所以把第二章学习的内容仔仔细细的看完了一遍,但还不够,在老师问我问题时,我才发现我对next的理解出错了,对for语句也不太熟悉,所以找了好几个同学请教,终于理解多了一层,不容易啊。
下次要是还有机会做课程设计的话,一定要给自己多些时间,来把程序研究透,这跟实习一样,对编程技能很有提高效果,在过程中碰到不理解或不熟悉的地方就会翻课本,找课件,查资料,也学会了一些以前很不熟悉的函数的使用与作用。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 课程设计 报告 一元 稀疏 多项式 计算器
![提示](https://static.bdocx.com/images/bang_tan.gif)