稀疏矩阵三元组顺序表存储法c++代码实现
时间: 2023-10-29 07:05:48 浏览: 105
以下是一个简单的C++代码实现稀疏矩阵三元组顺序表存储法的例子:
```c++
#include <iostream>
using namespace std;
const int MAXSIZE = 100; // 最大非零元素个数
const int ROW = 3; // 稀疏矩阵的行数
const int COL = 4; // 稀疏矩阵的列数
struct Triple {
int row, col, val;
};
class SparseMatrix {
public:
SparseMatrix(int mat[ROW][COL]); // 构造函数
void display(); // 打印稀疏矩阵
private:
Triple data[MAXSIZE]; // 三元组顺序表
int numRow, numCol, numVal; // 稀疏矩阵的行数、列数和非零元素个数
};
SparseMatrix::SparseMatrix(int mat[ROW][COL]) {
numRow = ROW;
numCol = COL;
numVal = 0;
for (int i = 0; i < ROW; i++) {
for (int j = 0; j < COL; j++) {
if (mat[i][j] != 0) { // 找到一个非零元素
data[numVal].row = i;
data[numVal].col = j;
data[numVal].val = mat[i][j];
numVal++;
}
}
}
}
void SparseMatrix::display() {
int k = 0;
for (int i = 0; i < numRow; i++) {
for (int j = 0; j < numCol; j++) {
if (k < numVal && data[k].row == i && data[k].col == j) {
cout << data[k].val << " ";
k++;
} else {
cout << "0 ";
}
}
cout << endl;
}
}
int main() {
int mat[ROW][COL] = {
{0, 0, 0, 0},
{5, 8, 0, 0},
{0, 0, 3, 0}
};
SparseMatrix sm(mat);
sm.display();
return 0;
}
```
输出结果为:
```
0 0 0 0
5 8 0 0
0 0 3 0
```
阅读全文