用c语言编写一个完整的程序实现稀疏矩阵三元祖单链表存储
时间: 2023-12-06 21:05:30 浏览: 107
C语言实现稀疏矩阵的存储
4星 · 用户满意度95%
好的,下面是用C语言编写一个完整的程序实现稀疏矩阵的三元组单链表存储的示例代码。这个程序可以让用户输入稀疏矩阵的行列数和元素值,然后输出三元组单链表。
```c
#include <stdio.h>
#include <stdlib.h>
#define MAX_ROW 100
#define MAX_COL 100
// 三元组节点结构体
struct TripleNode {
int row;
int col;
int value;
struct TripleNode* next;
};
// 创建稀疏矩阵的三元组单链表
struct TripleNode* createSparseMatrix(int matrix[][MAX_COL], int row, int col) {
struct TripleNode* head = NULL;
for (int i = 0; i < row; i++) {
for (int j = 0; j < col; j++) {
if (matrix[i][j] != 0) {
struct TripleNode* node = (struct TripleNode*)malloc(sizeof(struct TripleNode));
node->row = i;
node->col = j;
node->value = matrix[i][j];
node->next = head;
head = node;
}
}
}
return head;
}
// 遍历三元组单链表并输出节点信息
void printSparseMatrix(struct TripleNode* head) {
printf("row\tcol\tvalue\n");
while (head != NULL) {
printf("%d\t%d\t%d\n", head->row, head->col, head->value);
head = head->next;
}
}
int main() {
int matrix[MAX_ROW][MAX_COL];
int row, col;
// 读取稀疏矩阵的行列数和元素值
printf("Enter the number of rows and columns: ");
scanf("%d %d", &row, &col);
printf("Enter the elements of the matrix:\n");
for (int i = 0; i < row; i++) {
for (int j = 0; j < col; j++) {
scanf("%d", &matrix[i][j]);
}
}
// 创建三元组单链表
struct TripleNode* head = createSparseMatrix(matrix, row, col);
// 输出三元组单链表
printf("\nThe sparse matrix in triplet form:\n");
printSparseMatrix(head);
return 0;
}
```
这个程序可以让用户输入稀疏矩阵的行列数和元素值,然后输出三元组单链表。用户可以根据需要修改稀疏矩阵的大小和元素值,得到不同的结果。
阅读全文