数组与广义表_稀疏矩阵的压缩存储_三元组做存储结构_矩阵相乘
来源:互联网 发布:重启mysql命令 编辑:程序博客网 时间:2024/06/05 11:34
"head.h"
#include<iostream>using namespace std;#define MAX_MATRIXSIZE 20#define ElemType intclass Triple//三元组类{public:int i,j;//行列号ElemType e;//元素值};class TSMatrix//矩阵类{public:Triple matrix[MAX_MATRIXSIZE];//三元组集合 int mu,nu,tu;//行数,列数,非零元个数};class Matrix//矩阵类封装了有关矩阵的操作{public:void MatrixMutiply();//接口函数private:void GetMatrix();//得到矩阵的三元组void Mutiply();//矩阵相乘void PrintMatrix(TSMatrix&);//打印矩阵void GetCpot(int[],TSMatrix &);//求得辅助数组Cpot的值//Cpot[i]代表行号为i的第一个元素在三元组中的位置TSMatrix m,n,q;//实例化矩阵类的对象};void Matrix::MatrixMutiply()//接口函数{GetMatrix();Mutiply();PrintMatrix(m);PrintMatrix(n);PrintMatrix(q);}void Matrix::GetMatrix()//得到矩阵M,N的三元组{char name[2]={'M','N'};TSMatrix * M[2]={&m,&n};for(int c=0;c<2;c++){cout<<"Please Input The Size Of The Matrix "<<name[c]<<"(m*n)"<<endl;cin>>M[c]->mu>>M[c]->nu;M[c]->tu=1;cout<<"Please Input Matrix With Increasing Order Of RowNumber"<<endl<<"rownum columnnum element"<<endl<<endl;int i,j;ElemType e;while(cin>>i>>j>>e){M[c]->matrix[M[c]->tu].i=i;M[c]->matrix[M[c]->tu].j=j;M[c]->matrix[M[c]->tu].e=e;M[c]->tu++;}cin.clear();}}void Matrix::GetCpot(int Cpot[],TSMatrix &t)//求得辅助数组Cpot的值//Cpot[i]代表行号为i的第一个元素在三元组中的位置{int num[MAX_MATRIXSIZE];memset(num,0,sizeof(num));for(int i=1;i<t.tu;i++)num[t.matrix[i].i]++;Cpot[1]=1;for(int i=2;i<=t.mu+1;i++)Cpot[i]=Cpot[i-1]+num[i-1];}void Matrix::Mutiply(){int cpotm[MAX_MATRIXSIZE],cpotn[MAX_MATRIXSIZE];GetCpot(cpotm,m);GetCpot(cpotn,n);int temp[MAX_MATRIXSIZE];q.tu=1;for(int i=1;i<m.tu;i=cpotm[m.matrix[i].i+1]){memset(temp,0,sizeof(temp));for(int j=i;j<cpotm[m.matrix[i].i+1];j++){for(int k=cpotn[m.matrix[j].j];k<cpotn[m.matrix[j].j+1];k++)temp[n.matrix[k].j]+=m.matrix[j].e*n.matrix[k].e;}for(int j=1;j<=n.nu;j++){if(temp[j]!=0){q.matrix[q.tu].i=m.matrix[i].i;q.matrix[q.tu].j=j;q.matrix[q.tu].e=temp[j];q.tu++;}}}}void Matrix::PrintMatrix(TSMatrix &t)//打印矩阵{for(int i=1;i<t.tu;i++)cout<<t.matrix[i].i<<" "<<t.matrix[i].j<<" "<<t.matrix[i].e<<endl;cout<<endl;}
"main.cpp"
- 数组与广义表_稀疏矩阵的压缩存储_三元组做存储结构_矩阵相乘
- 数组与广义表_稀疏矩阵的压缩存储_三元组做存储结构_矩阵转置
- 数据结构_数组与广义表_矩阵的十字链表存储稀疏矩阵相加
- 稀疏矩阵的三元组存储结构
- 稀疏矩阵的三元组顺序表存储及矩阵相乘算法小结
- 稀疏矩阵的三元组顺序表存储及矩阵相乘算法小结
- 稀疏矩阵的三元组顺序表存储及矩阵相乘算法小结
- 数组与矩阵(1)_矩阵相乘
- 矩阵的压缩存储————用三元组表存储稀疏矩阵
- 基本存储结构_矩阵
- 稀疏矩阵压缩存储的三元组表示法
- 数据结构编程笔记十三:第五章 数组和广义表 稀疏矩阵的压缩存储实现
- 利用稀疏矩阵的“三元组表”存储结构,实现两个矩阵的相加。
- 【数组与广义表项目3-2-稀疏矩阵的三元组的加法】
- 稀疏矩阵三元组存储
- 稀疏矩阵的压缩存储与快速转置 三元组法 类与对象实现
- 矩阵的压缩存储(稀疏矩阵的十字链表存储、稀疏矩阵的三元组行逻辑链接的顺序表存储表示、稀疏矩阵的三元组顺序表存储表示)
- 稀疏矩阵的三元组顺序存储
- 数组与广义表_稀疏矩阵的压缩存储_三元组做存储结构_矩阵转置
- Linux 内核同步机制
- Objective-C语法之集合对象的那些事儿(九)
- Linux进程通信-信号量
- Linux进程通信-共享内存
- 数组与广义表_稀疏矩阵的压缩存储_三元组做存储结构_矩阵相乘
- Linux进程通信-内存映射
- Objective-C语法之词典对象的那些事儿(八)
- smarty3.0和__autoload()冲突
- Linux进程通信-消息队列
- oracle体系结构学习笔记
- Android核心模块内容概述
- Linux信号透彻分析与理解
- Linux进程通信-信号