求矩阵A中的马鞍点行中最小,列中最大) void Get Saddle(int A[m][n) for(i=0; i<m; 1++) for(min=Abro]j=0; j<n;j++) fA]<mn)min=A的;求一行中的最小值 for(j=0;j<n; j++) f(A[]=min)判断这个些)最小值是否鞍点 for(flag=1, k=0; k<m; k++) if(min<Akko] flag=0 if(flag printf( Found a saddle element!nal%d]%d]%d ,Lj)
求矩阵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
三元组表示的稀疏矩阵加法 • 三元组表示的稀疏矩阵加法.doc
以三元组格式输出十字链表表示的矩阵 void Print OLMatrixoLMatrix A) for(i=0; i right)∥逐次遍历 每一个行链表 y printf("%d %d%d\n",i,p-j,p->e
以三元组格式输出十字链表表示的矩阵 • void Print_OLMatrix(OLMatrix A) { for(i=0;iright) //逐次遍历 每一个行链表 printf("%d %d %d\n",i,p->j,p->e; } }
·三元组顺序表的一种变形是从三元组顺序 表中去掉行下标域得到二元顺序表,另设 个行起始向量,其每个分量是二元组顺序表 的一个下标值指示该行中第一个非零元素 在二元组顺序表中的起始位置试编写一个 算法,由矩阵的下标值i求矩阵元素
• 三元组顺序表的一种变形是,从三元组顺序 表中去掉行下标域得到二元顺序表,另设一 个行起始向量,其每个分量是二元组顺序表 的一个下标值,指示该行中第一个非零元素 在二元组顺序表中的起始位置.试编写一个 算法,由矩阵的下标值i,j求矩阵元素
ty pede structi int int e: 3 DSElem; typedef structi DSElem data MAXsIzEI int cpot[ MAXROW;这个向量存储 每一行在二元组中的起始位置 int mu, nu, tu } SMAtrix;二元组矩阵类型
• typedef struct{ int j; int e; } DSElem; • typedef struct{ DSElem data[MAXSIZE]; int cpot[MAXROW]; //这个向量存储 每一行在二元组中的起始位置 int mu,nu,tu; } DSMatrix; //二元组矩阵类型
Status DSMatrixLocate(DSMatrix A, int i, int j, int &e) for(s=A cpot[; S<A cpot[i+1]&&A data[s]j=j; s++) ∥注意查找范围 (< A cpot[+1]&& A data[s]j==j找到了元素A[U e=A data[s]; return oK: return error:
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; }