数据结构压缩矩阵
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1.课程设计的目的
(1) 熟练使用 C ++语言编写程序,解决实际问题;
(2) 了解并掌握数据结构与算法的设计方法,具备初步的独立分析和
设计能力;
(3) 初步掌握软件开发过程的问题分析、系统设计、程序编码、测试
等基本方法和技能;
(4) 提高综合运用所学的理论知识和方法独立分析和解决问题的能
力;
2.需求分析
问题描述:对于特殊矩阵可以通过压缩存储减少存储空间。
基本要求:
1.针对多种特殊矩阵进行压缩存储,并能显示压缩后的相关地址和值。
2.输入在原来特殊矩阵中的地址,要求能从压缩后的矩阵中读出相应的值。
特殊矩阵:具有许多相同矩阵元素或零元素,并且这些相同矩阵元素或零元素的分布有一定规律性的矩阵。最常见的特殊矩阵有对称矩阵、上(下)三角矩阵、对角矩阵等。
特殊矩阵的压缩存储方法:找出特殊矩阵中值相同的矩阵元素的
分布规律,把那些呈现规律性分布的值相同的多个矩阵元素压缩存储到一个存储空间中。
3.矩阵的压缩与解压缩问题的设计
图1-1
4.调试分析
图1-2程序运行界面
图1-3 程序运行界面
图1-4 文件的输入
5.小结
经过矩阵的压缩与解压缩的实验,让我了解到计算机是怎么为了减少承储空间的,存储矩阵的。以及特殊矩阵式在计算机中存储,以及把这些矩阵的压缩后怎么解压出来,恢复原来的样子!我觉得像这样的课程设计,一定要先想好有哪些板块,以及那些板块之间的关系这么样!谁调谁!
6、参考文献
[1] 严蔚敏,吴伟民编著. 数据结构(C 语言版)--北京: 清华大学出版社,2007.2
[2]严蔚敏,吴伟民米宁编著. 数据结构题集(C 语言版)--北京: 清华大学出版社,2007.3
[3]网上搜索相关程序作为参考
附录:
#include
#include
using namespace std;
int SymmetricMatrix()
{
int colm;//行
int row;//列
fstream file("SymmetricMatrix.txt");
ofstream fout("SymmetricMatrix1.txt");
file>>colm>>row;
int **matrix;
//bool flag=true;
matrix=new int *[colm];
for(int i=0;i { matrix[i]=new int[row]; } for (int i=0;i { for(int j=0;j { file>>matrix[i][j]; //cout< } } for (int i=0;i { for(int j=i;j { if(!(matrix[i][j]==matrix[j][i])) { cout<<"输入的不是对称矩阵"< return 0; } } } cout<<"对称矩阵如下"< for (int i=0;i { for(int j=0;j { //fin>>matrix[i][j]; cout< } cout< } int *array=new int[colm*(colm+1)/2]; int k=0; for (int i=0;i { for(int j=i;j { array[k]=matrix[i][j]; file<<3433; //file< cout< ++k; } } cout< return 0; } int UpperTriangularMatrix() { int colm;//行 int row;//列 fstream file("UpperTriangularMatrix.txt"); //ofstream fout("UpperTriangularMatrix.txt"); file>>colm>>row; int **matrix; //bool flag=true; matrix=new int *[colm]; for(int i=0;i { matrix[i]=new int[row]; } for (int i=0;i { for(int j=0;j { file>>matrix[i][j]; //cout< } } for (int i=0;i { for(int j=0;j { if(!(matrix[i][j]==0)) { cout<<"输入的不是上三角矩阵"< return 0; } } } cout<<"上三角矩阵如下"< for (int i=0;i { for(int j=0;j { //fin>>matrix[i][j]; cout< } cout< } int *array=new int[colm*(colm+1)/2]; int k=0; for (int i=0;i { for(int j=i;j { array[k]=matrix[i][j]; file<<3433; //file< cout< ++k;