课程设计报告数据结构课程设计 2.docx

上传人:b****6 文档编号:7624559 上传时间:2023-01-25 格式:DOCX 页数:11 大小:78.88KB
下载 相关 举报
课程设计报告数据结构课程设计 2.docx_第1页
第1页 / 共11页
课程设计报告数据结构课程设计 2.docx_第2页
第2页 / 共11页
课程设计报告数据结构课程设计 2.docx_第3页
第3页 / 共11页
课程设计报告数据结构课程设计 2.docx_第4页
第4页 / 共11页
课程设计报告数据结构课程设计 2.docx_第5页
第5页 / 共11页
点击查看更多>>
下载资源
资源描述

课程设计报告数据结构课程设计 2.docx

《课程设计报告数据结构课程设计 2.docx》由会员分享,可在线阅读,更多相关《课程设计报告数据结构课程设计 2.docx(11页珍藏版)》请在冰豆网上搜索。

课程设计报告数据结构课程设计 2.docx

课程设计报告数据结构课程设计2

北京化工大学北方学院

课程设计报告

课程名称数据结构课程设计

设计题目特殊矩阵的压缩存储算法的实现

专业、班级软件工程1004

学号100220126

姓名祝杰

指导教师周建敏老师

设计时间2013年9月2日--2013年9月15日

2013年9月20日

一、引言(简要说明设计题目的目的、意义、内容、主要任务等)

1.设计目的:

 

《数据结构》课程主要介绍最常用的数据结构,阐明各种数据结构内在的逻辑关系,讨论其在计算机中的存储表示,以及在其上进行各种运算时的实现算法,并对算法的效率进行简单的分析和讨论。

进行数据结构课程设计要达到以下目的:

  了解并掌握数据结构与算法的设计方法,具备初步的独立分析和设计能力;  初步掌握软件开发过程的问题分析、系统设计、程序编码、测试等基本方法

和技能; 

 提高综合运用所学的理论知识和方法独立分析和解决问题的能力; 

 训练用系统的观点和软件开发一般规范进行软件开发,培养软件工作者所应

具备的科学的工作方法和作风。

2.设计内容和要求:

 

设计内容:

 

(1) 针对多种特殊矩阵进行压缩存储,并能显示压缩后的相关地址和值; 

(2) 输入在原来特殊矩阵中的地址,要求能从压缩后的矩阵中读出相应的值。

    

设计要求:

 

(1) 符合课题要求,实现相应功能; 

(2) 要求界面友好美观,操作方便易行; (3) 注意程序的实用性、安全性;

3.主要任务:

1.针对多种特殊矩阵进行压缩存储,并能显示压缩后的相关地址和值;

2.输入在原来特殊矩阵中的地址,要求能从压缩后的矩阵中读出相应的值;

二、正文(课程设计的主要内容,包括实验与观测方法和结果、仪器设备、计算方法、编程原理、数据处理、设计说明与依据、加工整理和图表、形成的论点和导出的结论等。

正文内容必须实事求是、客观真切、准确完备、合乎逻辑、层次分明、语言流畅、结构严谨,符合各学科、专业的有关要求。

1.概要设计

程序流程图如下:

图2.1程序流程图

2详细设计

特殊矩阵:

值相同元素或者零元素分布有一定规律的矩阵称为特殊矩阵例:

对称矩阵、上(下)三角矩阵都是特殊矩阵。

3测试结果

图3.1选择矩阵类型

图3.2对称矩阵

图3.3下三角矩阵

图3.4上三角矩阵

4源代码

#include

#include

staticshangsanjiao(intn)

{

inti,j,k,z,g;

intL[100][100],SA[100];

printf("请输入您要压缩矩阵的行列数\n");

scanf("%d",&n);

printf("请输入您的矩阵内元素:

\n");

for(i=1;i

for(j=1;j

{

scanf("%d",&L[i][j]);

if(i<=j)

k=j*(j-1)/2+i-1;

else

k=n*(n+1)/2;

SA[k]=L[i][j];

}

printf("您输入的矩阵为:

\n");

for(i=1;i

{for(j=1;j

printf("%d",L[i][j]);

printf("\n");

}

printf("压缩存储后:

\n");

for(k=0;k

printf("%d%d\n",k,SA[k]);

printf("若要读取矩阵的值请输入'100'退出输入'000'。

\n");

scanf("%d",&z);

for(g=0;g<1000;g++)

{

while(z==100)

{

printf("请您输入未压缩时所在行数:

\n");

scanf("%d",&i);

printf("请您输入未压缩时所在列数:

\n");

scanf("%d",&j);

if(i<=j)

k=j*(j-1)/2+i-1;

else

k=n*(n+1)/2;

printf("该地址的值为:

\n");

printf("%d\n",SA[k]);

z=1;

printf("继续请输入'100'退出输入'000'。

\n");

scanf("%d",&z);

}

break;

}

}

staticduichen(intn)

{

inti,j,k,z,g;

intL[100][100],SA[100];

printf("请输入您要压缩矩阵的行列数\n");

scanf("%d",&n);

printf("请输入您的矩阵内元素:

\n");

for(i=1;i

for(j=1;j

{

scanf("%d",&L[i][j]);

if(i>=j)

k=i*(i-1)/2+j-1;

else

k=j*(j-1)/2+i-1;

SA[k]=L[i][j];

}

printf("您输入的矩阵为:

\n");

for(i=1;i

{for(j=1;j

printf("%d",L[i][j]);

printf("\n");

}

printf("压缩存储后:

\n");

for(k=0;k

printf("%d%d\n",k,SA[k]);

printf("若要读取矩阵的值请输入'100'退出输入'000'。

\n");

scanf("%d",&z);

for(g=0;g<1000;g++)

{

while(z==100)

{

printf("请您输入未压缩时所在行数:

\n");

scanf("%d",&i);

printf("请您输入未压缩时所在列数:

\n");

scanf("%d",&j);

if(i>=j)

k=i*(i-1)/2+j-1;

else

k=j*(j-1)/2+i-1;

printf("该地址的值为:

\n");

printf("%d\n",SA[k]);

z=1;

printf("继续请输入'100'退出输入'000'。

\n");

scanf("%d",&z);

}

break;

}

}

staticxiasanjiao(intn)

{

inti,j,k,z,g;

intL[100][100],SA[100];

printf("请输入您要压缩矩阵的行列数\n");

scanf("%d",&n);

printf("请输入您的矩阵内元素:

\n");

for(i=1;i

for(j=1;j

{

scanf("%d",&L[i][j]);

if(i>=j)

k=i*(i-1)/2+j-1;

else

k=n*(n+1)/2;

SA[k]=L[i][j];

}

printf("您输入的矩阵为:

\n");

for(i=1;i

{for(j=1;j

printf("%d",L[i][j]);

printf("\n");

}

printf("压缩存储后:

\n");

for(k=0;k

printf("%d%d\n",k,SA[k]);

printf("若要读取矩阵的值请输入'100'退出输入'000'。

\n");

scanf("%d",&z);

for(g=0;g<1000;g++)

{

while(z==100)

{

printf("请您输入未压缩时所在行数:

\n");

scanf("%d",&i);

printf("请您输入未压缩时所在列数:

\n");

scanf("%d",&j);

if(i>=j)

k=i*(i-1)/2+j-1;

else

k=n*(n+1)/2;

printf("该地址的值为:

\n");

printf("%d\n",SA[k]);

z=1;

printf("继续请输入'100'退出输入'000'。

\n");

scanf("%d",&z);

}

break;

}

}

intmain()

{

intn,d;

intm;

for(d=0;d<100;d++)

{

printf("请选择您要存储的特殊矩阵类型:

\n");

printf("1:

对称矩阵2:

上三角矩阵3:

下三角矩阵\n");

printf("退出请输入’101‘\n");

scanf("%d",&m);

if(m==1)

{duichen(n);}

elseif(m==2)

{shangsanjiao(n);}

elseif(m==3)

{xiasanjiao(n);}

elseif(m==101)

break;

else

printf("对不起您输入的选号错误。

\n");

}

}

三、结论(应当准确、完整、明确精练;也可以在结论或讨论中提出建议、设想、尚待解决问题等。

经过一周的奋斗,这次数据结构的课程设计终于做完了。

通过这次设计我们也着实又感受了一次编程的乐趣,从中也学到了不少知识。

感受最深的一点是:

以前用编程,只是注重如何编写函数能够完成所需要的功能,似乎没有明确的战术,只是凭单纯的意识和简单的语句来堆砌出一段程序。

现在编程感觉完全不同了。

在编写一个程序之前,先对这个课程设计进行了一下分析,将每个要求都花了一下算法流程图,使得自己的思路更加的清晰了。

然后进行编程,不断的在电脑上调试程序,终于完成了此次的课程设计。

另外,我还体会到深刻理解数据结构的重要性。

只有真正理解这样定义数据类型的好处,才能用好这样一种数据结构。

了解典型数据结构的性质是非常有用的,它往往是编写程序的关键。

通过这次课程设计逐渐提高了自己的程序设计和调试能力,我以前对算法一直很害怕,总是看不明白究竟这程序中间的过程是怎么进行的。

在这次实验中我终于克服了这一障碍,一遍遍在心中自己默默的走,终于弄明白了,真的是功夫不负有心人啊!

这次试验也让我看到了自己的不足,还是不太用模板类。

还有许多关于C语言的一些比较具体的东西还不太懂,需要进一步了解。

这次试验还让我意识到只有不断的在电脑上调试程序,自己的水平才能得到提高。

我会继续我们的兴趣编写程序的,相信在越来越多的尝试之后,自己会不断进步和提高。

四、参考文献

[1] 李云清,杨庆红.数据结构(C语言版).北京:

人民邮电出版社,2004. 

[2] 严蔚敏,吴伟民.数据结构(C语言版).北京:

清华大学出版.1997. 

[3] 苏光奎,李春葆.数据结构导学.北京:

清华大学出版.2002.  

[4] 周海英,马巧梅,靳雁霞.数据结构与算法设计.北京:

国防工业出版社,2007. 

[5] 张海藩. 软件工程导论. 北京:

清华大学出版社.2003.

五、指导教师评语

签名:

年月日

课程设计成绩(五级分制)

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 经管营销 > 经济市场

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1