资源简介
数据结构,该程序是利用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语言代码,有注释
相关资源
- 数据结构 图的遍历源代码
- 数据结构实验源代码集
- 实验报告:数据结构长整数四则运算
- 数据结构教程李春葆第五版书中例题
- 吕鑫vc6c++数据结构视频源码
- 数据结构教程李春葆第五版课后答案
- 李春葆课后习题答案(数据结构教材
- 数据结构1800题 题+答案(全)
- 数据结构(C语言版)ppt课件,清华,
- c++常用游戏算法及数据结构设计
- 数据结构超全面复习导图
- 《Data Structures and Algorithm Analysis in C
- 数据结构C语言版教学笔记严蔚敏
- 数据结构C语言版期末考试试题(有答
- 多功能计算器实现C++代码以及代码详
- C语言数据结构银行客户排队
- C语言实现栈操作
- 简易学生管理系统源码 数据结构 大作
- 数据结构与C语言综合习题集
- 数据结构实验——赫夫曼树相关
- C语言进阶源码---基于graphics实现图书
- 数据结构——C++语言描述 陈慧南
- 广东工业大学数据结构课程设计航空
- 数据结构课程设计扑克牌排序
- 数据结构各种算法实现(C++模板),
- (严版C语言版数据结构源码.rar
- 数据结构算法与应用--C++语言描述 书
- 数据结构大作业 停车场管理 C语言
- 北航991数据结构与C语言程序设计历年
- 用c写的航空订票系统 航班信息改变
评论
共有 条评论