《数据结构课程设计》报告一元稀疏多项式计算器.docx

上传人:b****5 文档编号:2803710 上传时间:2022-11-15 格式:DOCX 页数:11 大小:80.86KB
下载 相关 举报
《数据结构课程设计》报告一元稀疏多项式计算器.docx_第1页
第1页 / 共11页
《数据结构课程设计》报告一元稀疏多项式计算器.docx_第2页
第2页 / 共11页
《数据结构课程设计》报告一元稀疏多项式计算器.docx_第3页
第3页 / 共11页
《数据结构课程设计》报告一元稀疏多项式计算器.docx_第4页
第4页 / 共11页
《数据结构课程设计》报告一元稀疏多项式计算器.docx_第5页
第5页 / 共11页
点击查看更多>>
下载资源
资源描述

《数据结构课程设计》报告一元稀疏多项式计算器.docx

《《数据结构课程设计》报告一元稀疏多项式计算器.docx》由会员分享,可在线阅读,更多相关《《数据结构课程设计》报告一元稀疏多项式计算器.docx(11页珍藏版)》请在冰豆网上搜索。

《数据结构课程设计》报告一元稀疏多项式计算器.docx

《数据结构课程设计》报告一元稀疏多项式计算器

《数据结构课程设计》报告

一元稀疏多项式计算器

 

班级:

软件1408

学号:

1130505140831

姓名:

齐瑞征

指导老师:

石锋

 

[问题描述]

设计简单的一个一元稀疏多项式计算器。

[基本要求]

一元稀疏多项式简单计算器的基本功能是:

(1)输入并建立多项式,以带头结点的单链表存储;

(2)输出多项式,输出形式为整数序列:

n,c1,e1,c2,e2,,,,,,,cn,en,其中n是多项式的项数,ci,ei,分别是第i项的系数和指数,序列按指数降序排序;

(3)多项式a和b相加,建立多项式a+b;

(4)多项式a和b相减,建立多项式a-b;

(5)多项式a和b相乘,建立多项式a*b;

[数据结构设计]

在模拟多项式时,为了简化处理,只取最核心的两个数据:

多项式的系数和指数,具体数据结构定义如下:

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

#include

typedefstructnode{

intxs;

intzs;

structnode*next;

}Dnode,*Dnodelist;/*定义结构体*/

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;

q->zs=zs;

r->next=q;

q->next=p;

return1;

}

}/*while(p->next)*/

q=Creat_node();

q->xs=xs;

q->zs=zs;

q->next=p->next;

p->next=q;

return1;

free(p);

free(q);

free(r);

}

函数功能:

将一项合并到多项式中。

参数说明:

D:

一个带头结点的单链表的头指针,其中按指数降序存放一个一元多项式的数据;

xs:

要合并的项的系数;

zs:

要合并的项的指数。

6、在poly.c中完成如下函数,并编译。

voidoutput(DnodelistD){

Dnodelistr;

r=D->next;

printf("%dx^%d",r->xs,r->zs);

r=r->next;

while(r!

=NULL)

{

if(r->xs>0)

printf("+%dx^%d",r->xs,r->zs);

else

printf("%dx^%d",r->xs,r->zs);

r=r->next;

}

printf("\n");}

函数功能:

以类似“-3*x^100+2*x^10-10”的形式输出D中存放的多项式数据。

7、在poly.c中输入以下函数,并编译。

Dnodelistinput(void){

DnodelistD;

intxs,zs;

D=Creat_node();

printf("请输入系数和指数(系数,指数):

");

scanf("%d,%d",&xs,&zs);

while(xs!

=0&&zs!

=0){

Insert_node(D,xs,zs);

printf("请输入系数和指数(系数,指数):

");

scanf("%d,%d",&xs,&zs);

}

returnD;

}

你认为以上函数的功能是什么?

答:

从键盘输入系数和指数存放在链表中。

8、在poly.c中输入以下main()函数,并编译。

voidmain(void){

DnodelistD;

D=input();

output(D);

}

9、运行你的程序,输入以下数据:

-3,100

2,10

-10,1

0,0

将你的程序的运行结果的界面粘贴在下面:

10、在poly.c中完成以下函数,其功能是计算D1和D2中两个多项式的和,函数返回和多项式。

DnodelistAddresult(DnodelistD1,DnodelistD2)

{

DnodelistD;

Dnodelistp,q;

intx,z;

D=Creat_node();

p=D1->next;

q=D2->next;

while(q)

{

x=q->xs;

z=q->zs;

Insert_node(D,x,z);

q=q->next;

}

while(p)

{

x=p->xs;

z=p->zs;

Insert_node(D,x,z);

p=p->next;

}

returnD;

}

11、在poly.c中完成以下两个函数,其功能分别是是计算两个多项式的差和乘积。

DnodelistSubresult(DnodelistD1,DnodelistD2){

DnodelistD;

Dnodelistp,q;

intx,z;

D=Creat_node();

p=D1->next;

q=D2->next;

while(p&&q)

{

if((p->zs)<(q->zs))

{

x=-(q->xs);

z=q->zs;

Insert_node(D,x,z);

q=q->next;

}

elseif((p->zs)>(q->zs))

{

x=p->xs;

z=p->zs;

Insert_node(D,x,z);

p=p->next;

}

else

{

z=q->zs;

x=(p->xs)-(q->xs);

Insert_node(D,x,z);

p=p->next;

q=q->next;

}

}

while(p)

{

x=p->xs;

z=p->zs;

Insert_node(D,x,z);

p=p->next;

}

while(q)

{

x=-(q->zs);

z=q->zs;

Insert_node(D,x,z);

q=q->next;

}

returnD;

}

DnodelistMulresult(DnodelistD1,DnodelistD2){

DnodelistD;

Dnodelistp,q;

intx,z;

D=Creat_node();

p=D1->next;

q=D2->next;

while(q)

{

while(p)

{

x=p->xs*q->xs;/*系数相乘,指数相加*/

z=p->zs+q->zs;

Insert_node(D,x,z);

p=p->next;

}

p=D1->next;

q=q->next;

}

returnD;

}

12、编写main函数,功能输入两个多项式的数据,计算并输出和、差、积多项式,把程序运行结果的界面粘贴在下面。

[收获和建议]

1、通过本次课程设计,你都有哪些收获,请写在下面。

通过这次课程设计,我感觉到要真正做出一个程序并不很容易,但只要用心去做,总会有收获,特别是当我遇到问题,查资料,问同学,想尽办法去解决,最后终于找到方法时,心里的那份喜悦之情真是难以形容.编写程序中遇到问题再所难免,应耐心探究其中的原因,从出现问题的地方起,并联系前后程序,仔细推敲,逐个排查.直到最终搞清为止。

“享受制作过程追求更加完美”是我对实训的总结。

2、你对这门课程教学内容和方法有什么好的建议,请写在下面。

通过这次课程设计我觉得我们学习《数据结构》的方法存在一定的弊端,《数据结构》的效果直接影响到我们对其它专业课的学习和今后业务的成长。

我觉得我们对于《数据结构》的学习不仅包括理论部分的学习,还要让我们勤动手,多实践。

 整个实验过程要结合教学进度与我们的实际情况,制定实验的内容。

实验分两部分,一是验证性的,主要结合课堂理论教学内容展开,学生可以对在课堂上学到的基本算法进行验证;二是设计性实验,坚持“学以致用”的原则,目的是让学生充分利用所学的理论知识进行相对复杂的应用设计,以进一步提高综合能力和创新实践能力。

而在传统的课堂教学中,一般采用的是“教师――黑板——学生”的教学模式,这对大多数教师和学生来说,“教”和“学”很难在课堂中得到良好的协调,因而也就难以对教学内容进行及时而有效地消化,“听懂但不会做”是大部分学生的通病,从而使教学效果受到影响。

所以我希望以后的数据结构的学习能够注重实验上机.

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 求职职场 > 简历

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1