求矩阵 A中的马鞍点 (行中最小,列中最大 )
void Get_Saddle(int A[m][n])
{
for(i=0;i<m;i++)
{
for(min=A[i][0],j=0;j<n;j++)
if(A[i][j]<min) min=A[i][j]; //求一行中的最小值
for(j=0;j<n;j++)
if(A[i][j]==min) //判断这个 (些 )最小值是否鞍点
{
for(flag=1,k=0;k<m;k++)
if(min<A[k][j]) flag=0;
if(flag)
printf("Found a saddle
element!\nA[%d][%d]=%d",i,j,A[i][j]);
}
}
}
三元组表示的稀疏矩阵加法
三元组表示的稀疏矩阵加法,doc
以三元组格式输出十字链表表示的矩阵
void Print_OLMatrix(OLMatrix A)
{
for(i=0;i<A.mu;i++)
{
if(A.rhead[i])
for(p=A.rhead[i];p;p=p->right) //逐次遍历每一个行链表
printf("%d %d %d\n",i,p->j,p->e;
}
}
三元组顺序表的一种变形是,从三元组顺序表中去掉行下标域得到二元顺序表,另设一个行起始向量,其每个分量是二元组顺序表的一个下标值,指示该行中第一个非零元素在二元组顺序表中的起始位置,试编写一个算法,由矩阵的下标值 i,j求矩阵元素,
typedef struct{
int j;
int e;
} DSElem;
typedef struct{
DSElem data[MAXSIZE];
int cpot[MAXROW]; //这个向量存储每一行在二元组中的起始位置
int mu,nu,tu;
} DSMatrix; //二元组矩阵类型
Status DSMatrix_Locate(DSMatrix A,int i,int j,int &e)
{
for(s=A.cpot[i];s<A.cpot[i+1]&&A.data[s].j!=j;s++);
//注意查找范围
if(s<A.cpot[i+1]&&A.data[s].j==j) //找到了元素 A[i][j]
{
e=A.data[s];
return OK;
}
return ERROR;
}