行逻辑链接示意图:
程序代码:
//行逻辑联接的顺序表
#include<stdio.h>
#define MAXSIZE 12500
#define MAXMN 500
#define ElemType int
#define Status int
#define OK 1
#define ERROR 0
typedef struct{
int i, j;//该非零元的行下标和列下标
ElemType e;// 该非零元的值
}Triple;// 三元组类型
typedef struct{
Triple data[MAXSIZE + 1];
int rpos[MAXMN + 1];
int mu, nu, tu;
}RLSMatrix;// 行逻辑链接顺序表类型
void CreateSMatrix(RLSMatrix *M){
printf("请输入矩阵的行数,列数,非零元个数\n");
scanf("%d%d%d", &M->mu, &M->nu, &M->tu);
if (M->tu>M->mu*M->nu)
{
printf("非法矩阵,请重新输入!\n");
CreateSMatrix(M);
}
printf("请输入非零元所在的行列及其数值:\n");
for (int k = 1; k <= M->tu; k++)
{
scanf("%d%d%d", &M->data[k].i, &M->data[k].j, &M->data[k].e);
if (M->data[k].i<1