文档介绍:中国地质大学
数据结构上机实****报告
课程名称数据结构
本科生专业网络工程
所在院系计算机学院
类别: 报告
目录
1. 需求分析 4
2. 设计 4
(1)设计思想 4
(2)概要设计 5
(3)详细设计...............................................................................................................................
调试分析.......................................................................................................................................
用户手册
.测试结果
源程序清单
一元稀疏多项式运算器
设计一个一元稀疏多项式简单计算器。
要求:(1)输入并建立两个多项式;
(2)多项式a与b相加,建立和多项式c;
(3)多项式a与b相减,建立和多项式d;
(4)输出多项式a,b,c,d。输出格式:比如多项式a为:A(x)=c1xe1+ c2xe2+…+ cmxem, 其中,ci和ei分别为第i项的系数和指数,且各项按指数的升幂排列,即0≤e1<e2<…<em。
设计
(1)设计思路: 定义线性表的动态分配顺序存储结构,建立多项式存储结构,定义指针*next ,利用链表实现队列的构造。定义如下的结构体
typedef struct node{
int x,z; //z是指数,x是系数
struct node *next;
}*pnode
每次输入一项的系数和指数,可以输出构造的一元多项式;演示程序以用户和计算机的对话方式执行,即在计算机终站上显示“提示信息”之后,由用户在键盘上输入演示程序中规定的运行命令;最后根据相应的输入数据(滤去输入中的非法字符)建立的多项式以及多项式相加的运行结果在屏幕上显示。多项式显示的格式为:c1x^e1+c2x^e2+…+cnx^en
(2)概要设计:本程序主要包括三个函数:
①结点创建函数,将输入的多项式化为字符串转化成一个只有系数、指数、后继的结构体。
pnode create(char *c,int i,int j)
{
if(j<i) return NULL;
int a=0,b=0,flag=0; //处理系数。
…………
…………
}
②主函数
void main()
{
cout<<"****************************************************************************"<<endl;
cout<<"***********************一元多项式的计算(和差)*****************************"<<endl;
…………
…………
}
③free()函数,将加减后合并的多余的及诶按空间释放
void free_pnode(pnode p)
{
pnode t;
while(p!=NULL)
{
t=p;
p=p->next;
free(t);
}
}
(3)详细设计
①多项式的相加
(1)功能:将两多项式相加。
(2)数据流入:输入函数。
(3)数据流出:多项式相加后的结果。
(4)程序流程图:多项式的加法流程图如图2所示。
(5)测试要点:两多项式是否为空,为空则提示重新输入,否则,进行运算。
开始
输入ch1和ch2
是
否
合并同类项
结束
是
否
同指数项系数相加后存入H中
直接把q1中各项存入H中
直接把q2中各项存入H
存储多项式ch2的空链q2是否为空
存储多项式ch1的空链q1是否为空
输出H
②多项式相减
(1)功能:将两多项式相减。
(2)数据流入:调用输入函数。
(3)数据流出:多项式相减后的结果。
(4)程序流程图:多项式的减法流程图如图3所示。
(5)测试要点:两多项式是否为空,为空则提示重新输入,否则,进行运算。
开始
输入ch1和ch2
是
否
合并同类项
结束
是
否
调用相加函数
直接把q1中各项存入H中
把q2中系数改变后存H中
存储多项式2的空链玩是否为空
存储多项式ch1的空链q1是否为空
输出H
③将多余的结点空间释放
调试分析
(1)测试的