1、课程设计报告数据结构课程设计 2北京化工大学北方学院课程设计报告课程名称 数据结构课程设计 设计题目 特殊矩阵的压缩存储算法的实现 专业、班级 软件工程 1004 学 号 100220126 姓 名 祝杰 指导教师 周建敏老师 设计时间 2013年9月2日-2013年9月15日 2013年 9月 20日 一、 引言(简要说明设计题目的目的、意义、内容、主要任务等)1设计目的:数据结构课程主要介绍最常用的数据结构,阐明各种数据结构内在的逻辑关系,讨论其在计算机中的存储表示,以及在其上进行各种运算时的实现算法,并对算法的效率进行简单的分析和讨论。进行数据结构课程设计要达到以下目的: 了解并掌握数据
2、结构与算法的设计方法,具备初步的独立分析和设计能力; 初步掌握软件开发过程的问题分析、系统设计、程序编码、测试等基本方法和技能; 提高综合运用所学的理论知识和方法独立分析和解决问题的能力; 训练用系统的观点和软件开发一般规范进行软件开发,培养软件工作者所应具备的科学的工作方法和作风。2设计内容和要求:设计内容:(1)针对多种特殊矩阵进行压缩存储,并能显示压缩后的相关地址和值;(2)输入在原来特殊矩阵中的地址,要求能从压缩后的矩阵中读出相应的值。设计要求:(1)符合课题要求,实现相应功能;(2)要求界面友好美观,操作方便易行;(3)注意程序的实用性、安全性;3.主要任务:1.针对多种特殊矩阵进行
3、压缩存储,并能显示压缩后的相关地址和值;2.输入在原来特殊矩阵中的地址,要求能从压缩后的矩阵中读出相应的值;二、 正文(课程设计的主要内容,包括实验与观测方法和结果、仪器设备、计算方法、编程原理、数据处理、设计说明与依据、加工整理和图表、形成的论点和导出的结论等。正文内容必须实事求是、客观真切、准确完备、合乎逻辑、层次分明、语言流畅、结构严谨,符合各学科、专业的有关要求。)1.概要设计程序流程图如下:图2.1 程序流程图2详细设计特殊矩阵:值相同元素或者零元素分布有一定规律的矩阵称为特殊矩阵 例:对称矩阵、 上(下)三角矩阵都是特殊矩阵。3测试结果图3.1 选择矩阵类型图3.2 对称矩阵图3.
4、3 下三角矩阵 图3.4 上三角矩阵4 源代码#include#include static shangsanjiao(int n)int i,j,k,z,g;int L100100,SA100;printf(请输入您要压缩矩阵的行列数n);scanf(%d,&n);printf(请输入您的矩阵内元素:n);for(i=1;in+1;i+)for(j=1;jn+1;j+)scanf(%d,&Lij);if(i=j)k=j*(j-1)/2+i-1;elsek=n*(n+1)/2;SAk=Lij;printf(您输入的矩阵为:n);for(i=1;in+1;i+)for(j=1;jn+1;j+)p
5、rintf(%d ,Lij);printf(n);printf(压缩存储后:n);for(k=0;kn*(n+1)/2+1;k+)printf(%d %dn,k,SAk);printf(若要读取矩阵的值请输入100退出输入000。n);scanf(%d,&z);for(g=0;g1000;g+)while(z=100)printf(请您输入未压缩时所在行数:n);scanf(%d,&i);printf(请您输入未压缩时所在列数:n);scanf(%d,&j);if(i=j)k=j*(j-1)/2+i-1;elsek=n*(n+1)/2;printf(该地址的值为:n);printf(%d n,
6、SAk);z=1;printf(继续请输入100退出输入000。n);scanf(%d,&z);break;static duichen(int n)int i,j,k,z,g;int L100100,SA100;printf(请输入您要压缩矩阵的行列数n);scanf(%d,&n);printf(请输入您的矩阵内元素:n);for(i=1;in+1;i+)for(j=1;j=j)k=i*(i-1)/2+j-1;elsek=j*(j-1)/2+i-1;SAk=Lij;printf(您输入的矩阵为:n);for(i=1;in+1;i+)for(j=1;jn+1;j+)printf(%d ,Lij
7、);printf(n);printf(压缩存储后:n);for(k=0;kn*(n+1)/2;k+)printf(%d %dn,k,SAk);printf(若要读取矩阵的值请输入100退出输入000。n);scanf(%d,&z);for(g=0;g=j)k=i*(i-1)/2+j-1;elsek=j*(j-1)/2+i-1;printf(该地址的值为:n);printf(%d n,SAk);z=1;printf(继续请输入100退出输入000。n);scanf(%d,&z);break;static xiasanjiao(int n)int i,j,k,z,g;int L100100,SA1
8、00;printf(请输入您要压缩矩阵的行列数n);scanf(%d,&n);printf(请输入您的矩阵内元素:n);for(i=1;in+1;i+)for(j=1;j=j)k=i*(i-1)/2+j-1;elsek=n*(n+1)/2;SAk=Lij;printf(您输入的矩阵为:n);for(i=1;in+1;i+)for(j=1;jn+1;j+)printf(%d ,Lij);printf(n);printf(压缩存储后:n);for(k=0;kn*(n+1)/2+1;k+)printf(%d %dn,k,SAk);printf(若要读取矩阵的值请输入100退出输入000。n);sca
9、nf(%d,&z);for(g=0;g=j)k=i*(i-1)/2+j-1;elsek=n*(n+1)/2;printf(该地址的值为:n);printf(%d n,SAk);z=1;printf(继续请输入100退出输入000。n);scanf(%d,&z);break;int main()int n,d;int m;for(d=0;d100;d+)printf(请选择您要存储的特殊矩阵类型:n); printf(1:对称矩阵 2:上三角矩阵 3:下三角矩阵n);printf(退出请输入101n);scanf(%d,&m);if(m=1) duichen(n);else if(m=2) sh
10、angsanjiao(n);else if(m=3) xiasanjiao(n);else if(m=101) break;else printf(对不起您输入的选号错误。n);三、 结论(应当准确、完整、明确精练;也可以在结论或讨论中提出建议、设想、尚待解决问题等。)经过一周的奋斗,这次数据结构的课程设计终于做完了。通过这次设计我们也着实又感受了一次编程的乐趣,从中也学到了不少知识。感受最深的一点是:以前用编程,只是注重如何编写函数能够完成所需要的功能,似乎没有明确的战术,只是凭单纯的意识和简单的语句来堆砌出一段程序。现在编程感觉完全不同了。在编写一个程序之前,先对这个课程设计进行了一下分析
11、,将每个要求都花了一下算法流程图,使得自己的思路更加的清晰了 。 然后进行编程,不断的在电脑上调试程序,终于完成了此次的课程设计。另外,我还体会到深刻理解数据结构的重要性。只有真正理解这样定义数据类型的好处,才能用好这样一种数据结构。了解典型数据结构的性质是非常有用的,它往往是编写程序的关键。通过这次课程设计逐渐提高了自己的程序设计和调试能力,我以前对算法一直很害怕,总是看不明白究竟这程序中间的过程是怎么进行的。在这次实验中我终于克服了这一障碍,一遍遍在心中自己默默的走,终于弄明白了,真的是功夫不负有心人啊! 这次试验也让我看到了自己的不足,还是不太用模板类。还有许多关于C语言的一些比较具体的东西还不太懂,需要进一步了解。这次试验还让我意识到只有不断的在电脑上调试程序,自己的水平才能得到提高。我会继续我们的兴趣编写程序的,相信在越来越多的尝试之后,自己会不断进步和提高。四、 参考文献1李云清,杨庆红.数据结构(C语言版).北京:人民邮电出版社,2004.2严蔚敏,吴伟民.数据结构(C语言版).北京:清华大学出版.1997.3苏光奎,李春葆.数据结构导学.北京:清华大学出版.2002.4周海英,马巧梅,靳雁霞.数据结构与算法设计.北京:国防工业出版社,2007.5张海藩.软件工程导论.北京:清华大学出版社.2003.五、 指导教师评语 签名: 年 月 日课程设计成绩(五级分制)
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1