- 6
- 0
- 约4.81千字
- 约 16页
- 2020-12-30 发布于湖北
- 举报
《数据结构课程设计》报告一元稀疏多项式计算器
??
??《数据结构课程设计》报告
??一元稀疏多项式计算器
??
??班级: 软件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;
??[数据结构设计]
??
??在模拟多项式时,为了简化处理,只取最核心的两个数据:多项式的系数和指数,具体数据结构定义如下:
??typedef struct node{
??int xs; /*系数*/
??int zs; /*指数*/
??struct node * 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中输入以下内容并编译,使没有语法错误:
??#includestdio.h
??#includestdlib.h
??typedef struct node{
??int xs;
??int zs;
??struct node * next;
??}Dnode,* Dnodelist; /*定义结构体*/
??Dnodelist Creat_node(void) /*链表初始化*/ {
??Dnodelist D;
??D=(Dnodelist)malloc(sizeof(Dnode));
??if(D)
??D-next=NULL;
??return D;
??}
??4、回答问题,以上程序中,Creat_node(void)函数的功能是什么? 答:创建链表里面的一个节点。
??
??5、在poly.c中完成如下函数,并编译。
??int Insert_node(Dnodelist D,int xs,int zs) /*插入函数*/ {
??Dnodelist p;
??Dnodelist q;
??Dnodelist r;
??p=D;
??while(p-next)
??{
??r=p;
??
??p=p-next;
??if(zs==p-zs)
??{
??p-xs=p-xs+xs;
??return 1;
??}
??else if(zsp-zs) {
??q=Creat_node();
??q-xs=xs;
??q-zs=zs;
??r-next=q;
??q-next=p;
??return 1;
??}
??}/*while(p-next)*/
??q=Creat_node();
??q-xs=xs;
??q-zs=zs;
??q-next=p-next;
??p-next=q;
??return 1;
??free(p);
??free(q);
??free(r);
??}
??函数功能:将一项合并到多项式中。
??参数说明:
??D:一个带头结点的单链表的头指针,其中按指数降序存放一个一元多项式的数据;
??xs:要合并的项的系数;
??zs:要合并的项的指数。
??6、在poly.c中完成如下函数,并编译。
??void output(Dnodelist D){
??Dnodelist r;
??r=D-next;
原创力文档

文档评论(0)