大二下学期数据结构课程设计实验报告Word下载.docx
- 文档编号:14334437
- 上传时间:2022-10-22
- 格式:DOCX
- 页数:49
- 大小:636.69KB
大二下学期数据结构课程设计实验报告Word下载.docx
《大二下学期数据结构课程设计实验报告Word下载.docx》由会员分享,可在线阅读,更多相关《大二下学期数据结构课程设计实验报告Word下载.docx(49页珍藏版)》请在冰豆网上搜索。
1)、能够按照指数降序排列建立并输出多项式;
2)、能够完成两个多项式的相加、相减,并将结果输入。
2、实验要求
在上交资料中请写明:
存储结构、多项式相加的基本过程的算法(可以使用程序流程图)、源程序、测试数据和结果、算法的时间复杂度、另外可以提出算法的改进方法。
3.存储结构
TypedefstructPNode;
{
floatcoef;
Intexpn;
StructPNode*next;
}Pnode,*Polynomial;
4.基本算法
1.概要设计
1.功能:
将要进行运算的多项式输入输出。
2.数据流入:
要输入的多项式的系数与指数。
3.数据流出:
合并同类项后的多项式。
4.程序流程图:
多项式输入流程图如图所示。
5.测试要点:
输入的多项式是否正确,若输入错误则重新输入
+++++++++++++++
++++++++++
否
是否输入正确
是
2、多项式的加法
开始
存储多项式1的空链P是否为空
存储多项式2的空链Q是否为空
中
结束
3、多项式的减法
r中
5.源程序
#include<
iostream>
conio.h>
stdlib.h>
usingnamespacestd;
structNode
{
floatcoef;
//结点类型
intexp;
};
typedefNodepolynomial;
structLNode
polynomialdata;
//链表类型
LNode*next;
typedefLNode*Link;
voidCreateLink(Link&
L,intn);
voidPrintList(LinkL);
voidPolyAdd(Link&
pc,Linkpa,Linkpb);
voidPolySubstract(Link&
voidCopyLink(Link&
pc,Linkpa);
voidPolyMultiply(Link&
intJudgeIfExpSame(Linkpa,Linke);
voidDestroyLink(Link&
L);
intCompareIfNum(inti);
voidDestroyLink(Link&
L)
Linkp;
p=L->
next;
while(p)
L->
next=p->
deletep;
}
deleteL;
L=NULL;
//创建含有n个链表类型结点的项,即创建一个n项多项式voidCreateLink(Link&
L,intn)
if(L!
=NULL)
DestroyLink(L);
Linkp,newp;
L=newLNode;
next=NULL;
(L->
data).exp=-1;
//创建头结点
p=L;
for(inti=1;
i<
=n;
i++)
newp=newLNode;
cout<
<
"
请输入第"
项的系数和指数:
endl;
系数:
;
cin>
>
(newp->
data).coef;
指数:
data).exp;
if(newp->
data.exp<
0)
您输入有误,指数不允许为负值!
deletenewp;
i--;
continue;
newp->
data.coef==0)
系数为零,重新输入!
while((p->
next!
=NULL)&
&
((p->
next->
data).exp<
data).exp))
p=p->
//p指向指数最小的那一个
if(!
JudgeIfExpSame(L,newp))
p->
next=newp;
else
输入的该项指数与多项式中已存在的某项相同,请重新创建一个正确的多项式"
CreateLink(L,n);
//创建多项式没有成功,递归调用重新创建
break;
/*判断指数是否与多项式中已存在的某项相同*/
intJudgeIfExpSame(LinkL,Linke)
while(p!
=NULL&
(e->
data.exp!
=p->
data.exp))
if(p==NULL)return0;
elsereturn1;
/*输出链表*/
voidPrintList(LinkL)
if(L==NULL||L->
next==NULL)
该一元多项式为空!
//项的系数大于的种情况
if((p->
data).coef>
data).exp==0)
(p->
elseif((p->
data).coef==1&
data).exp==1)
x"
data).exp!
=1)
x^"
data).exp==1&
data).coef!
data).coef<
elsecout<
//项的系数小于的种情况
elseif(p->
data.coef==-1&
data.exp==1)
-x"
-x^"
data.exp;
data.coef<
+"
data).coef==1)
/*把一个链表的内容复制给另一个链表*/
pc,Linkpa)
Linkp,q,r;
pc=newLNode;
pc->
r=pc;
p=pa;
while(p->
q=newLNode;
q->
data.coef=p->
data.coef;
data.exp=p->
r->
next=q;
r=q;
}}
/*将两个一元多项式相加*/
pc,Linkpa,Linkpb)
Linkp1,p2,p,pd;
CopyLink(p1,pa);
CopyLink(p2,pb);
p=pc;
p1=p1->
p2=p2->
while(p1!
p2!
if(p1->
p2->
data.exp)
next=p1;
elseif(p1->
data.exp>
next=p2;
p1->
data.coef=p1->
data.coef+p2->
data.coef!
=0)
pd=p1;
deletepd;
if(p1!
if(p2!
/*将两个多项式相减*/
pc,Linkpa,Link
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 大二 学期 数据结构 课程设计 实验 报告