您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 经营企划 > 数据结构课程设计报告一元多项式计算
数据结构课程设计报告题目:一元多项式计算班级:计算机092姓名:余海刚指导教师:董跃华,井福荣成绩:__________________2011年6月22日1摘要(题目)::文件是程序设计中的一个重要概念。所谓“文件”一般是指存储在外部介质上数据的集合。一批数据时以文件的形式存放在外部介质(如磁盘)上的。操作系统是以文件为单位对数据进行管理的,也就是说,如果想找存在外部介质上的数据,必须先按文件名找到所指定的文件,然后从该文件中读取数据。要向外部介质上存储数据也必须先建立一个文件(以文件名标识),才能向它输出数据。题目要求能够按照指数降序排列建立并输出多项式;能够完成两个多项式的相加、相减,并将结果输入;单链表是用一组地址任意的存储单元存放线性表中的数据元素。以元素(数据元素的映象)+指针(指示后继元素存储位置)=结点(表示数据元素或数据元素的映象)以“结点的序列”表示线性表。关键字:单链表,数据结构,流程图,整理表达式,if语句。。2目录:1.引言………………………………………………………………..22.需求分析……………………………………………………………..33.概要设计……………………………………………………………..34.详细设计……………………………………………………………..65.测试结果…………………………………………………………...116.调试分析…………………………………………………………….147.设计体会…………………………………………………………….148.结束语……………………………………………………………….14参考文献………………………………………………………………14附录……………………………………………………………………1531.引言单链表:用一组地址任意的存储单元存放线性表中的数据元素。以元素(数据元素的映象)+指针(指示后继元素存储位置)=结点(表示数据元素或数据元素的映象)。单链表是一种顺序存取的结构,为找第i个数据元素,必须先找到第i-1个数据元素。因此,查找第i个数据元素的基本操作为:移动指针,比较j和i。文件是程序设计中的一个重要概念。所谓“文件”一般是指存储在外部介质上数据的集合。一批数据时以文件的形式存放在外部介质(如磁盘)上的。操作系统是以文件为单位对数据进行管理的,也就是说,如果想找存在外部介质上的数据,必须先按文件名找到所指定的文件,然后从该文件中读取数据。要向外部介质上存储数据也必须先建立一个文件(以文件名标识),才能向它输出数据。本报告中所设计的整理表达式,实现了以线性表结构的单向表表示商场所需求的功能,,将文件形式保存的数据恢复成线性表结构的单向表的流程中所需的功能。2.需求分析要求只输入数字,输入零代表输入结束。要求能够按照指数降序排列建立并输出多项式;能够完成两个多项式的相加、相减,并将结果输入;3.概要设计stdio.h、iostream.h、string.h、stdlib.h.malloc.h为包含的库函数除此之外还有结构体和宏定义的应用4系统流程图:图3.15调用函数图;图3.24、详细设计4.1引用库函数及变量的定义#includestdio.h/*标准输入/输出头文件*/主函数main()主界面menu()函数kuanjia1()函数delayMS函数Zlbds函数gotoTextPos函数polycha函数polyadd6#includeconio.h/*包含绘制图形函数等头文件*/#includestring.h/*包含字符串处理函数头文件*/#includestdlib.h/*包含动态存储与释放函数头文件*/#includeiostream#includestrong.cpp#defineMax100/*宏观定义栈的最大容量*/typedefstructpolynode{intcoef;//多项式的系数intexp;//指数structpolynode*next;}node;4.2输入算法的实现voidkuanjia1()//大框架{system(cls);printf(╔━━━━━━━━━━━━━━━━━━╗);printf(┃┃);printf(┃┃);printf(┃┃);printf(┃┃);printf(┃┃);printf(┃┃);printf(┃┃);printf(┃┃);printf(┃┃);printf(┃┃);printf(┃┃);printf(┃┃);printf(┃┃);printf(┃┃);printf(┃┃);printf(╚━━━━━━━━━━━━━━━━━━╝);gotoTextPos(4,1);printf(一元多项式计算);}7voidmenu()//主界面{kuanjia1();gotoTextPos(16,8);printf(1.Start);gotoTextPos(16,10);printf(2.Exit);gotoTextPos(2,14);printf(Pleaseinputyourchoice:);intn;scanf(%d,&n);switch(n){case1:zlbds();break;case2:return;default:gotoTextPos(28,14);printf(Error!);gotoTextPos(2,16);printf(Pressanykeytotryagain!);getch();menu();}}4.3输出算法的实现voidzlbds(){kuanjia1();node*ha,*hb,*hc,*hd;gotoTextPos(5,2);printf(请输入多项式ha的系数与指数:\n);ha=create();gotoTextPos(2,9);print(ha);gotoTextPos(2,10);printf(\n);gotoTextPos(2,10);8printf(请输入多项式hb的系数与指数:\n);hb=create();gotoTextPos(2,17);print(hb);gotoTextPos(2,18);printf(\n);gotoTextPos(2,18);printf(多项式的和是:\n);polyadd(ha,hb);gotoTextPos(2,19);print(ha);gotoTextPos(2,19);printf(\n);gotoTextPos(2,20);printf(请输入多项式hc的系数与指数:\n);hc=create();gotoTextPos(2,27);print(hc);gotoTextPos(2,27);printf(\n);gotoTextPos(2,28);printf(请输入多项式hd的系数与指数:\n);hd=create();gotoTextPos(2,35);print(hd);gotoTextPos(2,35);printf(\n);gotoTextPos(2,36);printf(多项式的差是:\n);polycha(hc,hd);gotoTextPos(2,37);print(hc);gotoTextPos(2,38);printf(\n);getch();menu();}4.4算法voidpolyadd(node*ha,node*hb)//一元多项式相加函数,用于将两个多项式相加,然后将和多项式存放在多项式ha中,并将多项式hb删除9{node*p,*q,*pre,*temp;intsum;p=ha-next;q=hb-next;pre=ha;while(p!=NULL&&q!=NULL){if(p-expq-exp){pre-next=p;pre=pre-next;p=p-next;}elseif(p-exp==q-exp){sum=p-coef+q-coef;if(sum!=0){p-coef=sum;pre-next=p;pre=pre-next;p=p-next;temp=q;q=q-next;free(temp);}else//如果系数和为零,则删除结点p与q,并将指针指向下一个结点{temp=p-next;free(p);p=temp;temp=q-next;free(q);q=temp;}}else{pre-next=q;pre=pre-next;q=q-next;}}if(p!=NULL)//将多项式A中剩余的结点加入到和多项式中pre-next=p;elsepre-next=q;}4.5主函数intmain()10{system(modecon:cols=40lines=41);setConsoleTitle(一元多项式计算by余海刚);system(color0A);menu();kuanjia1();gotoTextPos(10,7);printf(拜);delayMS(600);gotoTextPos(19,7);printf(拜);delayMS(600);gotoTextPos(20,9);printf(b);delayMS(600);gotoTextPos(21,9);printf(y);delayMS(600);gotoTextPos(24,9);printf(余);delayMS(600);gotoTextPos(26,9);printf(海);delayMS(600);gotoTextPos(28,9);printf(刚);delayMS(600);return0;115、测试结果5.1输入界面图图5.1125.2..1输出界面图输入选择1的运行界面。见1.10图5.2.1135.2.2输入选择2的运行界面。见图5.2.2145.2.3输入其它选择的运行界面。见图5.2.36、调试分析编译时,发现有的括号可删可不删时,会自动删除,这样导致程序不够紧密。刚刚接到这个题目的时候,本人发现用单链表做会更加的减少时间复杂度和空间复杂度,从而更好的方便使用,于是本人的一切出发点都是围绕方便使用者进行。程序的开始我使用的是宏定义,使程序更加的简洁明了。登陆界面其实15是利用判断语句做的,后面的输入输出没有什么特别的,是按照一般线性表的输入输出做的,。除此之外,本人还花了一部分时间到美化界面上,现在的界面是在本人的能力范围之内最好的。7、设计体会通过这个星期的课程设计,本人的收获还是不少的。刚开始看到这个课程设计题目的时候,本人觉得很有信心,因为本人认为本人的数据结构和C语言中本人最喜欢也是学的最好的地方就是线性,但是随着对这个题目的细细探索,本人发现这题目还是有一定的难度的,越看本人觉得越急躁,但是这样反而更加的阻碍我的思路,直到本人碰到一个在C语言方面颇有心得的同学,他帮我解决了很多问题,更主要的是他让本人明白了耐性在一个程序中的重要作用,现在,借着这里本人想真诚的对他说一声“谢谢!”本人一定会更加的努力培养本人的耐性,让本人的人生更加的美好而成功!数据结构的很多算法没能熟练的掌握,以致在调试的时候花了很长时间,而且程序不够工程化,功能不够完善。8、结束语该系统本人主要做了三个功能选项,,一个主界面。解决了一元多项式计算问题,当然此系统也可应用到其它表达式系统。它是利用了C语言实现的。此系统的作界面,操作员可以对某个指定的库存文件进行选择,文件名自定。非常感谢老师对本人的教导。参考文献[1]严蔚敏吴伟名编著,《数据结构》,清华大学出版社,2001年1月[2]谭浩强编著,《C程序设计》(第三版),新世纪计算机基础教育丛书清华大学出版社,2005年7月第三版[3]张颖江,胡燕。《c语言程序设计》[M]。北京:科学出版社。1985年。[4]裔红艳《数据结构》课程设计报告,计算机师范[5]李春葆编著,《数据结构习题与解析》(第三版),清华大学出版社,2006年10月2016附录:#includestdio.h#includestdlib.h#includei
本文标题:数据结构课程设计报告一元多项式计算
链接地址:https://www.777doc.com/doc-2429627 .html