数组与广义表_稀疏矩阵的压缩存储_三元组做存储结构_矩阵相乘

来源:互联网 发布:重启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"





原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 移动4g网非常卡怎么办 移动4g卡网速慢怎么办 手机移动4g网卡怎么办 华为手机摄像头进灰怎么办 美图t8忘记密码怎么办 华为mate7忘记开机密码怎么办 华为mate9开机密码忘记怎么办 华为手机系统更新失败怎么办 mate9系统升级后耗电快怎么办 华为荣耀手机耗电快怎么办 荣耀10手机拍照不清晰怎么办 荣耀6x拍照模糊怎么办 华为荣耀P9进水了怎么办 苹果5s手机信号不好怎么办 苹果5s信号不好怎么办? 苹果5s像素不好怎么办 华为mate边缘有缝怎么办 华为mate8边缘有缝怎么办 手机系统占用运行内存大怎么办 安卓手机储存空间不足怎么办 手机显示系统空间不足怎么办 联系人存储已停止运行怎么办 荣耀note8听筒声音小怎么办 红米4x内存不足怎么办 安卓电视内存小怎么办 红米手机运行内存不足怎么办 红米手机存储空间不足怎么办 华为手机储存空间不足怎么办 大麦机顶盒遥控器丢了怎么办 大麦盒子总自动加软件怎么办 小米手机玩王者荣耀卡怎么办 荣耀8青春版信号差怎么办 华为mate8电池不耐用怎么办 华为4x内存小怎么办 发现手机被用过怎么办 华为p8手机声音小怎么办 手机指纹解锁密码忘了怎么办 华为p10黑色掉漆怎么办 金立手机导航信号弱怎么办 手机导航时gps信号弱怎么办 三星手机导航gps信号弱怎么办