⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 algo5-1.cpp

📁 Status CreateSMatrix(RLSMatrix &M) { // 创建稀疏矩阵M int i Triple T Status k printf("请输入矩阵的行
💻 CPP
字号:
 // algo5-1.cpp 实现算法5.2的程序
 #include"c1.h"
 typedef int ElemType;
 #include"c5-2.h"
 #include"bo5-2.cpp"

 Status FastTransposeSMatrix(TSMatrix M,TSMatrix &T)
 { // 快速求稀疏矩阵M的转置矩阵T。算法5.2
   int p,q,t,col,*num,*cpot;
   num=(int *)malloc((M.nu+1)*sizeof(int)); // 生成数组([0]不用)
   cpot=(int *)malloc((M.nu+1)*sizeof(int)); // 生成数组([0]不用)
   T.mu=M.nu;
   T.nu=M.mu;
   T.tu=M.tu;
   if(T.tu)
   {
     for(col=1;col<=M.nu;++col)
       num[col]=0; // 设初值
     for(t=1;t<=M.tu;++t) // 求M中每一列含非零元素个数
       ++num[M.data[t].j];
     cpot[1]=1;
     for(col=2;col<=M.nu;++col) // 求第col列中第一个非零元在T.data中的序号
       cpot[col]=cpot[col-1]+num[col-1];
     for(p=1;p<=M.tu;++p)
     {
       col=M.data[p].j;
       q=cpot[col];
       T.data[q].i=M.data[p].j;
       T.data[q].j=M.data[p].i;
       T.data[q].e=M.data[p].e;
       ++cpot[col];
     }
   }
   free(num);
   free(cpot);
   return OK;
 }

 void main()
 {
   TSMatrix A,B;
   printf("创建矩阵A: ");
   CreateSMatrix(A);
   PrintSMatrix(A);
   FastTransposeSMatrix(A,B);
   printf("矩阵B(A的快速转置): ");
   PrintSMatrix(B);
   DestroySMatrix(A);
   DestroySMatrix(B);
 }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -