数据结构作业
2003 年第五章 数组
( 1) 定义类型:
#define MAXSIZE 100
typedef struct {
int i,j;//非零元行、列下标
ElemType e;
} Triple; //定义三元组
typedef struct {
Triple data[MAXSIZE+1];
int mu,nu,tu;
} TSMatrix; //定义三元组表
5.21 假设 稀疏 矩阵 A和 B均以三元组顺序表作为存储结构:求
C=A+B。
int ADD(TSMatrix *A,TSMatrix *B,TSMatrix *C)
{ int m=1,n=1,k=1; /*读,m,n,写,k */
if (A->mu!=B->mu || A->nu!=B->nu)
return ERROR;
while (m<=A->tu && n<=B->tu)
{
/*比较 A->data和 B->data的行、列 */
/*必要时,m++,n++,k++ */
}
while (m<=A->tu ) /*复制 A中为处理完的三元组 */
while (n<=B->tu ) /*复制 B中为处理完的三元组 */
}
int ADD(TSMatrix *A,TSMatrix *B,TSMatrix *C)
{ int m=1,n=1,k=1; /*读,m,n,写,k */
if (A->mu!=B->mu || A->nu!=B->nu)
return ERROR;
while (m<=A->tu && n<=B->tu)
{
/*比较 A->data和 B->data的行、列 */
/*必要时,m++,n++,k++ */
}
while (m<=A->tu ) /*复制 A中为处理完的三元组 */
while (n<=B->tu ) /*复制 B中为处理完的三元组 */
}
int ADD(TSMatrix *A,TSMatrix *B,TSMatrix *C)
{ int m=1,n=1,k=1; /*读,m,n,写,k */
if (A->mu!=B->mu || A->nu!=B->nu)
return ERROR;
while (m<=A->tu && n<=B->tu)
{ int l1,l2;
l1= A->data[m].i* A->nu+ A->data[m].j+1;
l2= B->data[n].i* B->nu+ B->data[n].j+1;
if (l1<l2) { /*复制 A中的三元组,m++,k++*/ }
else if (ll==l2) {/*相加 */}
else {/*复制 B中的三元组,n++,k++*/}
}…,.}
int ADD(TSMatrix *A,TSMatrix *B,TSMatrix *C)
{ int m=1,n=1,k=1; /*读,m,n,写,k */
if (A->mu!=B->mu || A->nu!=B->nu) return ERROR;
while (m<=A->tu && n<=B->tu)
{ int l1,l2;
l1= A->data[m].i* A->nu+ A->data[m].j+1;
l2= B->data[n].i* B->nu+ B->data[n].j+1;
if (l1<l2) {
C->data[k]=A->data[m];
m++,k++
}
else if (ll==l2) {
C->data[k].i=B->data[n].i;
C->data[k].j=B->data[n].j;
C->data[k].e= A->data[n].e+ B->data[n].e;
if (C->data[k].e ) k++; /*非 0元素移动 */
m++,n++;
}
else {
C->data[k]=B->data[n];
n++,k++
}
}
while (m<=A->tu ) /*复制 A中为处理完的三元组 */
{
C->data[k]=A->data[m];
m++,k++}
while (n<=B->tu ) /*复制 B中为处理完的三元组 */
{
C->data[k]=B->data[n];
n++,k++}
C->tu=k-1; C->mu=A->mu; C->nu=A->nu;
return OK;
}