资源简介

//稀疏矩阵的三元组顺序表存储表示 #define MAXSIZE 100 //非零元个数最大为100 typedef struct {int i,j; //非零元的行下标和列下标 ElemType e; //非零元 }Triple; typedef struct {Triple data[MAXSIZE+1]; //非零元三元组表,data[0]不用 int mu,nu,tu; //矩阵的总行数,总列数,非零元总个数 }TSMatrix;

资源截图

代码片段和文件信息

//稀疏矩阵的三元组顺序表存储表示及其转置算法.cpp 
#include  
#define ERROR   0
#define OK      1
typedef int status;
typedef int ElemType;

//稀疏矩阵的三元组顺序表存储表示
#define MAXSIZE 100                 //非零元个数最大为100
typedef struct 
{int ij;                           //非零元的行下标和列下标
 ElemType e;                        //非零元
}Triple;
typedef struct 
{Triple data[MAXSIZE+1];            //非零元三元组表data[0]不用
 int munutu;                      //矩阵的总行数总列数非零元总个数
}TSMatrix;

status CreateTriplTable(TSMatrix &M)
{//建立三元组表
 int k;
 printf(“请输入稀疏矩阵行数 列数 非零元个数: “);  
 scanf(“%d%d%d“&M.mu&M.nu&M.tu);
 if (M.tu<1||M.tu>MAXSIZE) return ERROR;
 printf(“行 列 非零元\n“);
 for (k=1;k<=M.tu;k++)
 scanf(“%d%d%d“&M.data[k].i&M.data[k].j&M.data[k].e);
 return OK;
}

void OutputTripleTable(TSMatrix M)
{//输出三元组表
 int k;
 printf(“行数 列数 非零元个数: “);  printf(“%d %d %d\n“M.muM.nuM.tu);
 printf(“行 列 非零元\n“);
 for (k=1; k<=M.tu; k++)
 printf(“%2d%3d%5d\n“ M.data[k].i M.data[k].j M.data[k].e);
}

void outputMatrix(TSMatrix M)
{//将三元组表M转换为对应的mu*nu阶稀疏矩阵并输出
 int i j k=1;
 printf(“三元组表对应的稀疏矩阵:\n“);
 for (i=0; i {for (j=0; j  if (i==M.data[k].i-1&&j==M.data[k].j-1) {printf(“%5d“M.data[k].e);  k++;}
 else printf(“%5d“0);
  printf(“\n“);
 }
}

status TransposeSMatrix(TSMatrix MTSMatrix &T)
{//采用三元组表存储表示求稀疏矩阵M的转置矩阵T. 算法5.1
 int colpq;
 T.mu=M.nu; T.nu=M.mu; T.tu=M.tu;
 if (T.tu)
 {q=1;                                   //首先置目标结点(即T)的序号为1即q=1
  fo

评论

共有 条评论