资源简介
数据结构,该程序是利用c语言实现稀疏矩阵的三元组转置算法
代码片段和文件信息
#include
#define MAXSIZE 10 //该数组的非零元个数最大不超过10个
typedef struct {
int ije; //i为行下标、j为列下标、e为i行j列的数值
}Triple; //定义存储行数、列数和数值的三元组结构体
typedef struct{
Triple data[MAXSIZE+1]; //非零元三元组表,data[0]未用
int munutu; //mu为矩阵的行数、nu为矩阵的列数、tu为矩阵非零元的个数
}TSMatrix;
TSMatrix createSMatrix(int S[5][6]) //根据传入的稀疏矩阵创建三元组表
{
TSMatrix St;
int t=0mnk=1; //t为计算矩阵中非零元的个数的计数器,m为传入矩阵的行数,n为传入矩阵的列数, k为记录三元组表data个数的计数器
for(m=1;m<5;m++)
{
for(n=1;n<6;n++) //行为外循环,列为内循环 ,当矩阵的值为非零值时,将此元素的行下标、列下标和元素值分别赋值给data三元组表的元素,
//另外, 计算非零值个数的计数器t加一
if(S[m][n]!=0)
{
t++;
St.data[k].i=m;
St.data[k].j=n;
St.data[k].e=S[m][n];
k++;
}
}
St.tu=t;
St.mu=4;
St.nu=5;//将此时的矩阵的行数、列数、以及非零值的个数分别赋给mu、nu、tu
printf(“转置前行数为4列数为5非零值有%d个\n“t);
return(St);
}
TSMatrix FastTransSMatrix(TSMatrix St)
{//将三元组重新进行排序,实现矩阵的转置
int qpcola; //定义变量q来存放转置后位于原矩阵中第col列的非零元的位置标数
//定义变量p来对原三元组的非零值进行计数和标号
//定义变量col 来存放原矩阵的列标
int num[10]cpot[10]; // 使用num[col]数组表示矩阵St中第 col列中的非零元个数
//cpot[col] 表示St 中的col列中第一个非零元在转置后三元组表中的位置
TSMatrix Mt; //定义 TSMatrix结构体变量,来存放转置后的三元组数表和行列数和非零值
Mt.mu=St.nu; //将原三元组的行数(列数)给转置后三元组的列数(行数)
Mt.nu=St.mu;
Mt.tu=St.tu;
if(Mt.tu)
{
for(col=1;col<=St.nu;++col) //利用循环语句逐列扫描,先将存放每一列的数组num置零,便于计数
num[col]=0;
for(a=1;a<=St.tu;++a) //利用循环语句将每一列中的非零元的个数计算下来存放在每一列的num数组中
++num[St.data[a].j];
cpot[1]=1; //易知,第一列的第一个非零元的位置为1
for(col=2
- 上一篇:C语言大作业-班费收支管理系统
- 下一篇:拉格朗日插值与线性插值 c语言代码,有注释
相关资源
- 数据结构课程设计文本编辑C语言描述
- 双端队列C++实现 双端队列C++实现
- 数据结构课程设计图书管理系统
- 课程表排课源代码四川大学数据结构
- 数据结构的迷宫问题 C语言
- 数据结构图的邻接矩阵功能实现
- 稀疏矩阵的三元组顺序表存储表示及
- 数据结构课程设计c++排序算法的比较
- 数据结构课程设计c++图书管理系统源
- 清华大学数据结构上机考试试题(C
- C++ 数据结构 算法B+树实现
- 数据结构十字链表C++
- 数据结构(c语言版)代码实现
- 无向图用邻接矩阵的深度优先遍历程
- 基于C++数据结构编写的航空订票系统
- 数据结构c语言实现求最短路径
- C语言版文件相似度对比,文本对比,
- 数据结构c语言一元多项式的表示相加
- 严蔚敏《数据结构》源代码C语言
- 数据结构C语言之串操作
- 无向图的邻接矩阵压缩存储.cpp
- 朱战立——数据结构程序(C语言版源
- 猜动物游戏.zip
- 数据结构c语言版快速排序实验报告
- 清华 严蔚敏《数据结构》的全部代码
- 数据结构活期储蓄账目管理c语言
- 数据结构C语言版期末总复习题
- 链表实现多项式加法和乘法C语言实现
- 数据结构遍历二叉树算法C语言版(附
- 数据结构 西安电子科技大学
评论
共有 条评论