1、上交课程设计报告打印版并进行课程设计答辩,要求每个同学针对自己的设计回答指导教师3-4个问题。1.17考核结束后将课程设计报告和源程序的电子版交班长统一刻光盘上交。、主要参考文献及资料1 严蔚敏 数据结构(C语言版)清华大学出版社 19992 严蔚敏 数据结构题集(C语言版)清华大学出版社 19993 谭浩强 C语言程序设计 清华大学出版社4 与所用编程环境相配套的C语言或C+相关的资料、成绩评定:设计成绩: (教师填写)指导老师: (签字)二 年 月 日目 录第一章 概述1第二章 系统分析2第三章 概要设计3第四章 详细设计4第五章 运行与测试18第六章 总结与心得20参考文献21第一章 概
2、述课程设计是实践性教学中的一个重要环节,它以某一课程为基础,可以涉及和课程相关的各个方面,是一门独立于课程之外的特殊课程。课程设计是让同学们对所学的课程更全面的学习和应用,理解和掌握课程的相关知识。数据结构是一门重要的专业基础课,是计算机理论和应用的核心基础课程。数据结构课程设计,要求学生在数据结构的逻辑特性和物理表示、数据结构的选择和应用、算法的设计及其实现等方面,加深对课程基本内容的理解。同时,在程序设计方法以及上机操作等基本技能和科学作风方面受到比较系统和严格的训练。在这次的课程设计中我选择的题目是动态链表结构下的一元多项式的加法、减法和乘法的实现。一元多项式计算是用C语言设计一个一元多
3、项式简单计算器。它能够实现按指数升序排列建立并输出多项式,并且能够完成两个多项式的相加、相减与相乘的运算和将其结果输入的功能。通过设计一元多项式,初步掌握软件开发过程的问题分析、系统设计、程序编码、测试等基本方法和技能提高,综合运用所学的理论知识和方法独立分析和解决问题的能力;加深对常用数据结构的理解,强化逻辑思维能力和动手能力,巩固良好的编程习惯,掌握工程软件设计的基本方法,为后续课程的学习打下坚实基础。第二章 系统分析1 动态链表结构下的一元多项式的加法、减法、乘法的实现。可以分为几个模块:输入模块、输出模块(升幂)、数据处理模块(多项式的加减乘)、主程序模块。2 在程序执行过程中加入汉字
4、提示符,让使用者清楚明白的操作该程序。运行程序时看起来简洁有序,操作简单明了。3 程序执行时的命令:创建两个一元多项式输入第一个一元多项式的项数依次输入一元多项式的系数和指数以相同方式输入第二个一元多项式数据处理输出结果。4 测试数据。输入的一元多项式系数指数分别为7 0,3 1,9 8,5 17和8 1,22 7,-9 8。加法结果为:7+11x+22x(7)+5x(17)减法结果为:7-5x-22x(7)+18x(8)+5x(17)5 乘法结果为:56x+24x(2)+154x(7)+3x(8)+45x(9)+198x(15)-81x(16)+40x(18)+110x(24)-45x(25
5、)第三章 概要设计1. 数据结构的设计为了节省存储空间,只存储多项式中系数非零的项,本程序使用链式存储结构。2. 算法的设计本设计从总体上划分为3个模块。a) 主函数模块。程序的入口,主要实现各个函数的调用。b) 头文件模块。定义类和结构体。c) 函数模块。数据处理和实现每个功能。3. 抽象数据类型ADT list 数据对象:D=ai | ai ElenSet, i=1,2,n,n0 数据关系:R1= | ai-1,aiD,i=2,n 基本操作: InitLink(& 初始条件:链表为空。 操作结果:创建链表。 Sparsity(&链表已存在。判断是否稀疏。 Display(; 定义指数 No
6、de *next; 定义结构体template 模板类class LinkList private: Node *); 建立链表 void Sparsity(int len); 是否稀疏 void Display(); 显示 void Merge(); 合并指数相同的项 void SelectSort(); 选择排序 void Negative(); 取负 void DelZero(); 删除系数为0的项 LinkList operator + (LinkList &b); 重载+ operator * (LinkList 重载*#endif POLYNOMIAL_H_INCLUDED1. 成
7、员函数。polynomial.cpp#include#includepolynomial.) *p, *q; q=-) p=new Node p-coef expn;next=NULL; q-next=p; q=p; 建立多项式void LinkListcoef)coef = 1)expn = 0) cout expn = 1) x elsex (expn coef = -1)-x-xcoef next; while(q) 0)+x+x endl;输出多项式Sparsity(int len) if ( ; q=(q-expn-p-expn); Display(); if (x )coef+=p
8、-next=p- t=p; p=p- free(t);合并指数相同的项SelectSort() for (q= expn) swap(q-coef,p-coef);expn,p- Merge();选择排序 升幂Negative() *p; p= - pb-coef=pa-expn=pa- pa=pa- else if(x coef=pb-expn=pb- pb=pb- else T coef=pa-coef+pb- if (coef)coef=coef; while(pa) while(pb) return m;重载+LinkListoperator* (LinkListexpn+pb-重载*
9、void menu() for (int i=0; i80; i+)*1.建立多项式tt2.输出多项式tt3.多项式相加4.多项式相减tt5.多项式相乘tt0.退出系统 for (i=0;请选择:2. 主函数。main.c#include cmathcstdlibfstream#include polynomial.cppusing namespace std;int main() freopen(data1.in, r, stdin); 输入重定向data1.outw, stdout); 输出重定向 LinkList a, b, m1, m2, m3; int n, flag; int AL
10、en, BLen; menu(); while(cin n, n) system(cls); switch(n) case 0:欢迎下次使用! exit(0); case 1: flag=0;请输入第一个一元多项式的长度: ALen; a.InitLink(ALen); 建立一元多项式 a.SelectSort(); 升幂排序 请输入第二个一元多项式的长度: BLen; b.InitLink(BLen); b.SelectSort(); 升序排序 break; case 2:a= a.Sparsity(ALen); 判断是否稀疏b= b.Sparsity(BLen); case 3: m1=a
11、+b; m1.SelectSort();a+b= m1.Display(); 输出a+b case 4: if (flag = 0) b.Negative(); 对b取负 flag=1; m2=a+b; m2.SelectSort();a-b= m2.Display(); 输出a-b case 5: if (flag = 1) b取负 m3=a*b; m3.SelectSort();a*b= m3.Display(); 输出a*b default: cout 输入错误,请重新输入!endl; return 0;第五章 运行与测试程序开始界面。选择 1,分别输入两个一元多项式选择2,输出两个一元
12、多项式分别选择3、4、5输入0结束程序第6章 总结与心得 这次课程设计使本学期所学的数据结构知识得到了巩固和应用,并且对C+也有了更进一步的了解。虽然在设计过程中遇到了一些困难,但感觉收获还是挺多的,自己扩充了很多知识点。通过这周的课程设计,我意识到好的学习方法的重要性,在学习中要学会主动,学会自学,不要什么东西都指望别人,要靠自己去细心观察,多问自己一个为什么,多动手查查、看看,不会的问题,抬头是google,这样自己学到手的东西才会更多!参考文献:1 严蔚敏、吴伟民主编 数据结构(C语言版) 清华大学出版社 20022 殷人昆等著 数据结构(C+版) 清华大学出版社 20013 金远平著 数据结构(C+描述) 清华大学出版社 2005 4 许卓群等著 数据结构与算法 高等教育出版社 20045 Frank M.Carrano 等著 数据结构与+高级教程清华大学出版社 20046 严蔚敏、吴伟民 数据结构习题集(C语言版)清华大学出版社 7 谭浩强 C+面向对象程序设计 清华大学出版社 2006
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1