文档介绍:稀疏矩阵的乘法运算
程序代码:
#include<>
#include<>
#include<>
#include<>
#include<>
#include<>
#define Ture 1
#define Overflow -1
typedef struct OLnode
{
int i,j;
int e;
struct OLnode *right,*down;
}OLnode,*Olink;
typedef struct
{
Olink *rhead,*chead;
int mu,nu,tu;
}Crosslist;
//[row]中插入一个t结点
void insert_row(Crosslist &M,OLnode *t,int row)
{
OLnode *p;
int col=t->j;
if([row]==NULL||[row]->j>col)
{
t->right=[row];
[row]=t;
}
else
{
for(p=[row];p->right&&p->right->j<col;p=p->right);//寻找在行表中的插入位置
t->right=p->right;
p->right=t;
}
}
//[col]中插入一个结点t
void insert_col(Crosslist &M,OLnode *t,int col)
{
OLnode *p;
int row=t->i;
if([col]==NULL||[col]->i>row)
{
t->down=[col];
[col]=t;
}
else
{
for(p=[col];p->down&&p->down->i<row;p=p->down);//寻找在列表中的插入位置
t->down=p->down;
p->down=t;
}
}
//创建十字链表并存入数据
void input(Crosslist &M)
{
int m,n,t;
cout<<"请输入矩阵的行和列的个数及非零元个数";
cin>>m>>n>>t;
if(t>m*n) exit(Overflow);
=m;
=n;
=t;
int row,col,e;
OLnode *q;
=(Olink *)malloc((m+1)*sizeof(Olink));
=(Olink *)malloc((n+1)*sizeof(Olink));
if(!) exit(Overflow);
if(!) exit(Overflow);
for(int i=0;i<=m+1;i++)
[i]=NULL;
for(