- 1、本文档共15页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
杨应安课程设计文档
红河学院工学院
课
程
设
计
报
告
告
专业:计算机科学与技术
年级:2011级
学号:201101030219
姓名: 杨应安
成绩:
课程设计目录
课程名称:数据结构与算法
设计任务:特殊矩阵的压缩存储算法的实现
任务
名称 特殊矩阵的压缩存储算法的实现 班级 2011级 指导
教师 许海成 地点 红河学院 成绩 学年 2012-2013 开始
日期 2012-12-7 结束
日期 2012-12-25 组员 一人独立完成
设计目的及要求:
目的:
(1)进一步加深特殊矩阵压缩,存储、定义的理解,并能够掌握特殊矩阵的压缩存储算,以及它在程序中的使用方法。
(2)掌握软件设计的基本内容和设计方法,并能培养进行规范化软件设计能力。
要求:
(1)首先要分析题目,查阅相关资料。
(2)清晰的设计出整个程序的思路。
(3)按要求编写程序。
(4)写出运行结果,并分析结果。
问题描述及基本要求:
问题描述:
对于特殊矩阵可以通过压缩存储减少存储空间。
基本要求:
1.针对多种特殊矩阵进行压缩存储,并能显示压缩后的相关地址和值;
2.输入在原来特殊矩阵中的地址,要求能从压缩后的矩阵中读出相应的值;
程序功能模块:
矩阵压缩存储系统功能模块,如图所示。主要由输入矩阵阶数、输入矩阵、显示矩阵、输入地址、读出相应的值、退出系统六部分组成。其中,输入矩阵阶数主要由用户输入矩阵阶数;输入矩阵主要输入矩阵;显示矩阵由系统显示矩阵;输入地址用来输入矩阵元素的地址;读出相应的值由系统读出;退出系统用来退出整个系统。
主要功能函数介绍:
Menu-list函数:输出矩阵压缩存储系统菜单
duichen函数:输入对称矩阵,实现压缩存储
shangsanjiao函数:输入上三角矩阵,实现压缩存储
xiasanjiao函数:输入下三角矩阵,实现压缩存储
main函数:函数调用以及结束程序
功能模块详细设计:
特殊矩阵:
值相同元素或者零元素分布有一定规律的矩阵称为特殊矩阵 例:对称矩阵、 上(下)三角矩阵都是特殊矩阵
特殊矩阵压缩存储(以对称矩阵为例)
对称矩阵是满足下面条件的n 阶矩阵: aij= aji 1= i,j= n
k= 0 1 2 3 4 5 6 n(n+1)/2-1
对称矩阵元素可以只存储下三角部分,共需 n(n+1)/2 个单元的空间( 三角矩阵的存储方式类似)
以一维数组sa[0..n(n+1)/2-1]作为n 阶对称矩阵A的存储结构A中任意一元素 aij与它的存储位置 sa[k] 之间关系:
k= 0 1 2 3 4 5 6 n(n+1)/2-1 static shangsanjiao(int n)
{
int i,j,k,z,g;
int L[100][100],SA[100];
printf(请输入您要压缩矩阵的行列数\n);
scanf(%d,n);
printf(请输入您的矩阵内元素:\n);
for(i=1;in+1;i++)
for(j=1;jn+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;in+1;i++)
{for(j=1;jn+1;j++)
printf(%d ,L[i][j]);
printf(\n);
}
printf(压缩存储后:\n);
for(k=0;kn*(n+1)/2+1;k++)
printf(%d %d\n,k,SA[k]);
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;
else
k=n*(n+1)/2;
printf(该地址的值为:\n);
printf(%d \n,SA[k]);
z=1;
printf(继续请输入100退出输入000。\n);
scanf(%d,z);
}
break;
}
}
static duichen(int n)
{
int i,j,k,z,g;
int L[10
您可能关注的文档
- 李斯羽幻境之旅.doc
- 李小龙:截拳道之道.pdf
- 李殊总结.doc
- 李践 赚取大利润的16个忠告.doc
- 李湘蜕变史 美少女VS胖大婶.doc
- 李阳超级人生名言20句.doc
- 李欣毕业答辩.ppt
- 李鸿章办“洋务”之实绩.ppt
- 材料2企业所得税减免税的条件、报送资料、后续管理参.doc
- 材料创建平安校园迎检汇报材料.docx
- 小平方房屋买卖合同(28篇).docx
- 渭华起义馆观后感作文500字五篇.docx
- 自然语言处理NLPTextRNN实现情感分类.docx
- 清明节继承先烈遗志演讲稿700字(24篇).docx
- 语文五年级上册第18课慈母情深部编版.docx
- Unit5Thevalueofmoneywords1单词课件高中人教版(2019)(1).pptx
- 中考英语话题复习之兴趣爱好省公开课金奖全国赛课一等奖微课获奖课件.pptx
- Unit1FestivalsandCelebrationsReadingandthinking课件-人教版高中英语.pptx
- 监狱防爆车采购合同协议.docx
- 电力服务代办合同协议.docx
文档评论(0)