数组和广义表
来源:互联网 发布:免费刷会员软件 编辑:程序博客网 时间:2024/05/22 21:48
1.稀疏矩阵的转置
#include<stdio.h> #include<stdlib.h> #define MAXSIZE 100 #define Status int typedef struct{int i, j;//非零元的行下标和列下标 int e;}Triple;typedef struct{Triple data[MAXSIZE + 1];//非零元的三元组表,data[0]未用 int mu, nu, tu;//矩阵中的行数,列数,非零元个数 }TSMatrix;void Creat(TSMatrix *M){printf("输入mu,nu,tu\n");scanf("%d %d %d", &M->mu, &M->nu, &M->tu);printf("输入%d个非零元以及行列下标\n", M->tu);for (int i = 1; i <= M->tu; i++)scanf("%d %d %d", &M->data[i].i, &M->data[i].j, &M->data[i].e);}void Print(TSMatrix *M)//以矩阵的形式输出三元组表示的稀疏矩阵 {int i, j, k;int a[10][10] = { 0 };for (k = 1; k <= M->tu; k++){//将稀疏矩阵的非零元素存入二维数组 i = M->data[k].i;j = M->data[k].j;a[i][j] = M->data[k].e;}for (i = 1; i <= M->mu; i++){//输出二维数组 for (j = 1; j <= M->nu; j++)printf("%4d ", a[i][j]);printf("\n");}}Status Transpose(TSMatrix *M, TSMatrix *T)//普通算法{int p, q, col;//将M的行列转换为T的列行 T->mu = M->nu; T->nu = M->mu; T->tu = M->tu;if (T->tu){q = 1;for (col = 1; col <= M->nu; col++)for (p = 1; p <= M->tu; p++){//扫描整个三元组表找到与col形同的 if (M->data[p].j == 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;q++;}}}return 1;}Status FastTransposeSMatrix(TSMatrix *M, TSMatrix *T)//快速转置算法{int col, t, p, q;int cpot[10], num[10];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) ++num[M->data[t].j]; //求M中每一列非零元个数 //求第 col列中第一个非零元在T.data中的序号 cpot[1] = 1;for (col = 2; col <= M->nu; ++col) 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];//与列数相同时有关}//for }//if return 1;}int main(){TSMatrix M, T;Creat(&M);Print(&M);FastTransposeSMatrix(&M, &T);//Transpose(&M, &T);printf("稀疏矩阵转置后\n");Print(&T);return 0;}
1 0
- 数组和广义表
- 数组和广义表
- 数组和广义表
- 数组和广义表
- 数组和广义表
- 数组和广义表
- 数组和广义表
- 数组和广义表
- 数组和广义表
- 数组和广义表
- 数组和广义表
- 数组和广义表
- 数组和广义表
- 数组和广义表 - [数据结构]
- 串 & 数组和广义表
- 数据结构,数组和广义表
- [数据结构]数组和广义表
- 【数据结构】数组和广义表
- NSDate 使用
- 真机测试Could not find Developer Disk Image
- 在网页中插入百度地图
- 先验概率与后验概率、贝叶斯区别与联系
- caffe网络微调(fine-tuning)
- 数组和广义表
- NSBundle
- 第八周:链串
- Photoshop 复制图层快捷键 ctrl+e 然后ctrl+j
- Java线程池介绍
- 免费的C++数学运算库
- 图像压缩
- C++11:智能指针
- 喷枪打字