用C++编程实现三角矩阵的压缩存储
时间: 2023-10-14 08:29:37 浏览: 184
好的,以下是C++代码实现三角矩阵的压缩存储:
```c++
#include<iostream>
using namespace std;
//三角矩阵压缩存储结构体
struct TriMatrix {
int n; //矩阵的阶数
int *data; //非0元素数组
};
//创建三角矩阵
void createTriMatrix(TriMatrix &tm) {
cout << "请输入矩阵的阶数:" << endl;
cin >> tm.n;
int nums = (tm.n * (tm.n + 1)) / 2; //计算非0元素个数
tm.data = new int[nums]; //动态分配内存
cout << "请输入三角矩阵的元素:" << endl;
for(int i = 0; i < nums; i++) {
cin >> tm.data[i];
}
}
//输出三角矩阵
void printTriMatrix(TriMatrix tm) {
int k = 0;
for(int i = 1; i <= tm.n; i++) {
for(int j = 1; j <= tm.n; j++) {
if(i <= j) {
cout << tm.data[k] << " ";
k++;
}
else {
cout << "0 ";
}
}
cout << endl;
}
}
int main() {
TriMatrix tm;
createTriMatrix(tm);
printTriMatrix(tm);
return 0;
}
```
这里使用了动态分配内存的方式来存储非0元素,避免了空间浪费。注意,三角矩阵中只需要存储下三角或上三角,这里选择存储下三角。你可以根据自己的需要进行修改。
阅读全文