特殊矩阵的压缩存储算法的实现

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

软件综合课程设计

特殊矩阵的压缩存储算法的实现二叉排序树的实现

二〇一四年六月

一、特殊矩阵的压缩存储算法的实现

1.问题陈述

对于特殊矩阵可以通过压缩存储减少存储空间。

基本要求:

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

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

2.程序代码

#include

#include

#include

static shangsanjiao(int n)

{

int i,j,k,z,g;

int L[100][100],SA[100];

cout<<"请输入您要压缩矩阵的行列数"<

cin>>n;

cout<<"请输入您的矩阵内元素:"<

for(i=1;i

for(j=1;j

{

cin>>L[i][j];

if(i<=j)

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

else

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

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

}

cout<<"您输入的矩阵为:"<

for(i=1;i

{for(j=1;j

cout<

cout<

}

cout<<"压缩存储后:"<

for(k=0;k

cout<

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

cin>>z;

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

{

while(z==100)

{

cout<<"请您输入未压缩时所在行数:"<>i;

cout<<"请您输入未压缩时所在列数:"<>j;

if(i<=j)

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

else

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

cout<<"该地址的值为:"<

cout<

z=1;

cout<<"继续请输入'100'退出输入'000'。"<>z;

}

break;

}

}

static duichen(int n)

{

int i,j,k,z,g;

int L[100][100],SA[100];

cout<<"请输入您要压缩矩阵的行列数"<>n;

cout<<"请输入您的矩阵内元素:"<

for(i=1;i

for(j=1;j

{

cin>>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];

}

cout<<"您输入的矩阵为:"<

for(i=1;i

{

for(j=1;j

cout<

cout<

}

cout<<"压缩存储后:"<

for(k=0;k

cout<

cout<<"若要读取矩阵的值请输入'100'退出输入'000'。"<>z;

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

{

while(z==100)

{

cout<<"请您输入未压缩时所在行数:"<

cin>>i;

cout<<"请您输入未压缩时所在列数:"<

cin>>j;

if(i>=j)

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

else

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

cout<<"该地址的值为:"<

cout<

z=1;

cout<<"继续请输入'100'退出输入'000'。"<

cin>>z;

}

break;

}

}

static xiasanjiao(int n)

{

int i,j,k,z,g;

int L[100][100],SA[100];

cout<<"请输入您要压缩矩阵的行列数"<

cin>>n;

cout<<"请输入您的矩阵内元素: "<

for(i=1;i

for(j=1;j

{

cin>>L[i][j];

if(i>=j)

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

else

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

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

}

cout<<"您输入的矩阵为:"<

for(i=1;i

{

相关文档
最新文档