1、 数据结构课程设计报告数据结构课程设计报告 一元稀疏多项式计算器一元稀疏多项式计算器 问题描述问题描述 设计简单的一个一元稀疏多项式计算器。 基本要求基本要求 一元稀疏多项式简单计算器的基本功能是: (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; 数据结构
2、设计数据结构设计 在模拟多项式时,为了简化处理,只取最核心的两个数据:多项式的系数和 指数,具体数据结构定义如下: typedef struct node int xs; /*系数*/ int zs; /*指数*/ struct node * next; /*next 指针*/ Dnode,* Dnodelist; 功能函数设计功能函数设计 (1)链表初始化函数 Creat_node() (2)多项式数据的输入函数 input() (3)数据的插入函数 Insert_node() (4)多项式的显示函数 output() (6)多项式的运算函数:新建链表存储计算后的多项式 多项式相乘 Mulr
3、esult() 多项式相加 Addresult() 多项式相减 Subresult() (7)主函数 main() 创建两个多项式的链表并且初始化,分别调用相应的多项式创建函数,创建 成功后选择运算方式,再将运算结果输出显示。 【实现过程】【实现过程】 1、在 D:根目录下建立文件夹,命名方式为“班级”+“顺序号(两位)+“姓名” , 例如你是商务 1419 班的,你在学生花名册上的顺序号是 05 号,你的姓名是张有 才,则文件夹的名 字是“商务 141905 张有才” 。这个文件夹就是你的工作文件夹。 2、在 VC 中创建 c+源程序,命名为“poly.c”,保存在工作文件夹中; 3、在 p
4、oly.c 中输入以下内容并编译,使没有语法错误: #include #include 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、在
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
6、=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; printf(“%dx%d“,r-xs,r-zs); r=r-next; while(r!=NULL) if(r-xs0) printf(“+%dx%d“,r-xs,r-zs); else printf(“%dx%d“,r-xs,r-zs); r=r-next