试编写一个以三元组形式输出用十字链表表示的稀疏矩阵中非零元素及其下标的算法
时间: 2023-06-13 18:06:54 浏览: 194
假设稀疏矩阵使用以下结构体进行表示:
```
struct Triple {
int row; // 行下标
int col; // 列下标
int val; // 非零元素的值
};
```
下面是一个以三元组形式输出用十字链表表示的稀疏矩阵中非零元素及其下标的算法:
```
void printSparseMatrix(CrossList matrix) {
// 遍历每一行
for (int i = 1; i <= matrix.row; i++) {
// 找到当前行的第一个非零元素
OLNode* node = matrix.rhead[i];
while (node) {
// 输出当前非零元素的行、列、值
printf("(%d, %d, %d) ", node->data.row, node->data.col, node->data.val);
// 移动到下一个非零元素
node = node->right;
}
printf("\n");
}
}
```
其中,`CrossList` 是用十字链表表示的稀疏矩阵的结构体,`matrix.row` 表示矩阵的行数,`matrix.rhead[i]` 表示第 `i` 行的头结点,`node->data` 表示当前节点的三元组数据。该算法遍历每一行,对于每一行中的非零元素,输出其行、列和值,然后移动到下一个非零元素,直到该行的所有非零元素都被输出。
阅读全文