《数据结构课程设计》报告一元稀疏多项式计算器Word下载.docx
《《数据结构课程设计》报告一元稀疏多项式计算器Word下载.docx》由会员分享,可在线阅读,更多相关《《数据结构课程设计》报告一元稀疏多项式计算器Word下载.docx(11页珍藏版)》请在冰豆网上搜索。
在模拟多项式时,为了简化处理,只取最核心的两个数据:
多项式的系数和指数,具体数据结构定义如下:
typedefstructnode{
intxs;
/*系数*/
intzs;
/*指数*/
structnode*next;
/*next指针*/
}Dnode,*Dnodelist;
[功能函数设计]
(1)链表初始化函数Creat_node()
(2)多项式数据的输入函数input()
(3)数据的插入函数Insert_node()
(4)多项式的显示函数output()
(6)多项式的运算函数:
新建链表存储计算后的多项式
多项式相乘Mulresult()
多项式相加Addresult()
多项式相减Subresult()
(7)主函数main()
创建两个多项式的链表并且初始化,分别调用相应的多项式创建函数,创建成功后选择运算方式,再将运算结果输出显示。
【实现过程】
1、在D:
根目录下建立文件夹,命名方式为“班级”+“顺序号(两位)+“姓名”,例如你是商务1419班的,你在学生花名册上的顺序号是05号,你的姓名是张有才,则文件夹的名
字是“商务141905张有才”。
这个文件夹就是你的工作文件夹。
2、在VC中创建c++源程序,命名为“poly.c”,保存在工作文件夹中;
3、在poly.c中输入以下内容并编译,使没有语法错误:
#include<
stdio.h>
stdlib.h>
/*定义结构体*/
DnodelistCreat_node(void)/*链表初始化*/
{
DnodelistD;
D=(Dnodelist)malloc(sizeof(Dnode));
if(D)
D->
next=NULL;
returnD;
}
4、回答问题,以上程序中,Creat_node(void)函数的功能是什么?
答:
创建链表里面的一个节点。
5、在poly.c中完成如下函数,并编译。
intInsert_node(DnodelistD,intxs,intzs)/*插入函数*/
Dnodelistp;
Dnodelistq;
Dnodelistr;
p=D;
while(p->
next)
{
r=p;
p=p->
next;
if(zs==p->
zs)
{
p->
xs=p->
xs+xs;
return1;
}
elseif(zs>
p->
zs){
q=Creat_node();
q->
xs=xs;
zs=zs;
r->
next=q;
next=p;
}/*while(p->
next)*/
q=Creat_node();
q->
next=p->
p->
return1;
free(p);
free(q);
free(r);
函数功能:
将一项合并到多项式中。
参数说明:
D:
一个带头结点的单链表的头指针,其中按指数降序存放一个一元多项式的数据;
xs:
要合并的项的系数;
zs:
要合并的项的指数。
6、在poly.c中完成如下函数,并编译。
voidoutput(DnodelistD){
Dnodelistr;
r=D->
printf("
%dx^%d"
r->
xs,r->
zs);
r=r->
while(r!
=NULL)
if(r->
xs>
0)
printf("
+%dx^%d"
else
r=r->
}
\n"
);
以类似“-3*x^100+2*x^10-10”的形式输出D中存放的多项式数据。
7、在poly.c中输入以下函数,并编译。
Dnodelistinput(void){
intxs,zs;
D=Creat_node();
请输入系数和指数(系数,指数):
"
scanf("
%d,%d"
&
xs,&
while(xs!
=0&
&
zs!
=0){
Insert_node(D,xs,zs);
你认为以上函数的功能是什么?
从键盘输入系数和指数存放在链表中。
8、在poly.c中输入以下main()函数,并编译。
voidmain(void){
D=input();
output(D);
9、运行你的程序,输入以下数据:
-3,100
2,10
-10,1
0,0
将你的程序的运行结果的界面粘贴在下面:
10、在poly.c中完成以下函数,其功能是计算D1和D2中两个多项式的和,函数返回和多项式。
DnodelistAddresult(DnodelistD1,DnodelistD2)
Dnodelistp,q;
intx,z;
D=Creat_node();
p=D1->
q=D2->
while(q)
{
x=q->
xs;
z=q->
zs;
Insert_node(D,x,z);
q=q->
while(p)
x=p->
z=p->
11、在poly.c中完成以下两个函数,其功能分别是是计算两个多项式的差和乘积。
DnodelistSubresult(DnodelistD1,DnodelistD2){
DnodelistD;
while(p&
q)
if((p->
zs)<
(q->
zs))
{
x=-(q->
xs);
z=q->
Insert_node(D,x,z);
q=q->
elseif((p->
zs)>
zs))
x=p->
z=p->
p=p->
else
x=(p->
xs)-(q->
x=-(q->
}
DnodelistMulresult(DnodelistD1,DnodelistD2){
DnodelistD;
while(p)
xs*q->
/*系数相乘,指数相加*/
zs+q->
p=D1->
12、编写main函数,功能输入两个多项式的数据,计算并输出和、差、积多项式,把程序运行结果的界面粘贴在下面。
[收获和建议]
1、通过本次课程设计,你都有哪些收获,请写在下面。
通过这次课程设计,我感觉到要真正做出一个程序并不很容易,但只要用心去做,总会有收获,特别是当我遇到问题,查资料,问同学,想尽办法去解决,最后终于找到方法时,心里的那份喜悦之情真是难以形容.编写程序中遇到问题再所难免,应耐心探究其中的原因,从出现问题的地方起,并联系前后程序,仔细推敲,逐个排查.直到最终搞清为止。
“享受制作过程追求更加完美”是我对实训的总结。
2、你对这门课程教学内容和方法有什么好的建议,请写在下面。
通过这次课程设计我觉得我们学习《数据结构》的方法存在一定的弊端,《数据结构》的效果直接影响到我们对其它专业课的学习和今后业务的成长。
我觉得我们对于《数据结构》的学习不仅包括理论部分的学习,还要让我们勤动手,多实践。
整个实验过程要结合教学进度与我们的实际情况,制定实验的内容。
实验分两部分,一是验证性的,主要结合课堂理论教学内容展开,学生可以对在课堂上学到的基本算法进行验证;
二是设计性实验,坚持“学以致用”的原则,目的是让学生充分利用所学的理论知识进行相对复杂的应用设计,以进一步提高综合能力和创新实践能力。
而在传统的课堂教学中,一般采用的是“教师――黑板——学生”的教学模式,这对大多数教师和学生来说,“教”和“学”很难在课堂中得到良好的协调,因而也就难以对教学内容进行及时而有效地消化,“听懂但不会做”是大部分学生的通病,从而使教学效果受到影响。
所以我希望以后的数据结构的学习能够注重实验上机.