数据结构课程设计-一元稀疏多项式简单计数器.doc

上传人:b****1 文档编号:269842 上传时间:2022-10-08 格式:DOC 页数:18 大小:276KB
下载 相关 举报
数据结构课程设计-一元稀疏多项式简单计数器.doc_第1页
第1页 / 共18页
数据结构课程设计-一元稀疏多项式简单计数器.doc_第2页
第2页 / 共18页
数据结构课程设计-一元稀疏多项式简单计数器.doc_第3页
第3页 / 共18页
数据结构课程设计-一元稀疏多项式简单计数器.doc_第4页
第4页 / 共18页
数据结构课程设计-一元稀疏多项式简单计数器.doc_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

数据结构课程设计-一元稀疏多项式简单计数器.doc

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

数据结构课程设计-一元稀疏多项式简单计数器.doc

数据结构课程设计

数据结构课程设计说明书

题目:

一元稀疏多项式简单计数器

学生姓名:

学号:

院(系):

理学院

专业:

数学与应用数学

指导教师:

张洲平

2011年12月23日

陕西科技大学

数据结构课程设计任务书

理学院数学与应用数学专业班级学生:

题目:

一元稀疏多项式简单计数器

课程设计从2011年12月19日起到2011年12月23日

1、课程设计的内容和要求(包括原始数据、技术要求、工作要求等):

一元稀疏多项式简单计数器

(1)输入并建立多项式

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

n,c1,e1,c2,e2……cn

,en,其中n是多项式的项数,ci,ei分别为第i项的系数和指数。

列按指数降序排列。

(3)多项式a和b相加,建立多项式a+b,输出相加的多项式。

(4)多项式a和b相减,建立多项式a-b,输出相减的多项式。

用带头结点的单链表存储多项式。

2、对课程设计成果的要求〔包括图表、实物等硬件要求〕:

1)根据课程设计题目要求编写所需程序代码

要求可以实现多项式的建立,以及两个多项式的相加、减,并且输出相加、减后所得的结果,同时用手算也可验证实验结果是否符合要求。

2)提交课程设计报告

按照具体要求完成课程设计报告,其中包括问题的描述、算法思想、程序实现结果、数据验证和实验总结等部分。

3、课程设计工作进度计划:

时间

设计任务及要求

1-10

搜集学习相关资料,明确实验要求、目的

1-11

分析课题,理清编程思路

1-12

编写程序,修改程序

1-13

代入数据,进行整体调试,运行,再修改

1-14

性能分析,撰写设计说明书

指导教师:

日期:

2011-11-15

教研室主任:

日期:

目录

一、问题描述…………………………………………………………………………1

二、算法思想…………………………………………………………………………2

三、数据结构…………………………………………………………………………3

四、设计模块划分……………………………………………………………………4

五、源程序……………………………………………………………………………5

六、算法分析…………………………………………………………………………10

七、运行结果…………………………………………………………………………11

八、设计总结与体会…………………………………………………………………13

参考文献……………………………………………………………………………14

1.问题描述:

一元稀疏多项式简单计数器

基本要求:

(1)输入并建立多项式

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

n,c1,e1,c2,e2……cn,en,其中n是多项式的项数,ci,ei分别为第i项的系数和指数。

序列按指数降序排列。

(3)多项式a和b相加,建立多项式a+b,输出相加的多项式。

(4)多项式a和b相减,建立多项式a-b,输出相减的多项式。

用带头结点的单链表存储多项式。

测试数据:

(1)(2x+5x8-3.1x11)+(7-5x8+11x9)

(2)(6x-3-x+4.4x2-1.2x9)-(-6x-3+5.4x2+7.8x15)

(3)(x+x2+x3)+0

(4)(x+x3)-(-x-x-3)

2.算法思想:

(1)建立多项式

一元多项式是由多个项的和组成的,将一元多项式的每个项用一结点表示,该结点中应包括该项的系数、该项的指数、指向下一项的指针,可以用线性表来依次输入各项结点,从而完成多项式链表的建立,为了使原多项式各项顺序不变,故采用尾插法建表。

(2)降幂输出多项式

我们可以先设一个幂指数i为可输入的最大幂指数,然后从首元结点开始顺次查询每一结点的指数和i,若相等则输出该结点,否则,i--,继续从首元结点开始查询,重复上述过程,直到i为可输入的最小幂指数。

这样,就按指数降幂输出了多项式。

多项式的项数统计可以通过头结点的next来实现,若非空,count++,直到结点的指针域为空,这样,count就统计出了项数。

(3)多项式相加

多项式的相加过程,其实就是相同指数的项的系数相加,不同指数的项复制到和多项式中,将结果用降幂输出函数输出。

(4)多项式相减

多项式的相减过程,其实就是相同指数的项的系数相减,对于不同指数的项,若是被减多项式,则将该结点复制输出,若是减多项式,则将该结点的系数变为原系数的相反数输出,将结果用降幂输出函数输出。

3.数据结构:

带头结点单链表抽象数据类型的结点结构定义如下:

typedefstructPolynode//多项式结点

{

intcoef;//系数

intexp;//指数

Polynode*next;

}Polynode,*Polylist;

4.模块划分:

(1)带头结点的多项式的建立函数PolylistPolycreate()

(2)带头结点的多项式的降幂输出函数voidprintf(Polylistpoly)

(3)带头结点的多项式的相加函数PolylistPolyadd(Polylista,Polylistb)

(4)带头结点的多项式的相减函数PolylistPolysub(Polylista,Polylistb)

(5)主函数voidmain()

5.源程序:

#include

#include

typedefstructPolyomial

{

floatcoef;

intexpn;

structPolyomial*next;

}*Poly,Polyomial;//Poly为结点指针类型

voidInsert(Polyp,Polyh){

if(p->coef==0)free(p);//系数为0时释放结点

else{

Polyq1,q2;

q1=h;q2=h->next;

while(q2&&p->expnexpn){//查找插入位置

q1=q2;

q2=q2->next;

}

if(q2&&p->expn==q2->expn){//将指数相同相合并

q2->coef+=p->coef;

free(p);

if(!

q2->coef){//系数为0的话释放结点

q1->next=q2->next;

free(q2);

}

}

else{//指数为新时将结点插入

p->next=q2;

q1->next=p;

}

}

}//Insert

PolyCreatePoly(Polyhead,intm){//建立一个头指针为head、项数为m的一元多项式

inti;

Polyp;

p=head=(Poly)malloc(sizeof(structPolyomial));

head->next=NULL;

for(i=0;i

p=(Poly)malloc(sizeof(structPolyomial));//建立新结点以接收数据

printf("输入第%d项的系数与指数:

",i+1);

scanf("%f%d",&p->coef,&p->expn);

Insert(p,head);//调用Insert函数插入结点

}

returnhead;

}//CreatePoly

voidDestroyPoly(Polyp){//销毁多项式p

Polyq1,

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

当前位置:首页 > 高等教育 > 法学

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

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