?? 5.22.txt
字號:
Status AddTSM(TSMatrix &A,TSMatrix B)
/* 將三元組矩陣B加到A上: A=A+B */
{
int pa,pb,pc;
int i,j,x,sum;
if(A.mu!=B.mu||A.nu!=B.nu) return ERROR;
if(A.tu==0) { //當(dāng)A的非零元數(shù)為0時(shí)
for(i=1;i<=B.tu;i++){
A.data[i].i=B.data[i].i;
A.data[i].j=B.data[i].j;
A.data[i].e=B.data[i].e;
}
A.tu=B.tu;
return OK;
}
for(i=1;i<=A.tu;i++) //先把A的元素儲存到后面
A.data[MAXSIZE-A.tu+i]=A.data[i];
pa=MAXSIZE-A.tu+1;
pb=1;
pc=1;
for(x=1;x<=A.mu;x++){
while(pa<MAXSIZE&&A.data[pa].i<x) pa++;
while(pb<B.tu&&B.data[pb].i<x) pb++;
while(pa<=MAXSIZE&&pb<=B.tu&&A.data[pa].i==x&&B.data[pb].i==x) {
if(A.data[pa].j==B.data[pb].j) {
sum=A.data[pa].e+B.data[pb].e;
if(sum){
A.data[pc].i=x;
A.data[pc].j=A.data[pa].j;
A.data[pc].e=sum;
pc++;
}
pa++;pb++;
}
else if(A.data[pa].j>B.data[pb].j){
A.data[pc].i=x;
A.data[pc].j=B.data[pb].j;
A.data[pc].e=B.data[pb].e;
pc++;pb++;
}
else{
A.data[pc].i=x;
A.data[pc].j=A.data[pa].j;
A.data[pc].e=A.data[pa].e;
pc++;pa++;
}
}
while(pa<=MAXSIZE&&A.data[pa].i==x)
{
A.data[pc].i=x;
A.data[pc].j=A.data[pa].j;
A.data[pc].e=A.data[pa].e;
pa++;pc++;
}
while(pb<=B.tu&&B.data[pb].i==x)
{
A.data[pc].i=x;
A.data[pc].j=B.data[pb].j;
A.data[pc].e=B.data[pb].e;
pb++;pc++;
}
}
for(i=MAXSIZE-A.tu+1;i<MAXSIZE;i++){
A.data[i].i=0;
A.data[i].j=0;
A.data[i].e=0;
}
A.tu=pc-1;
return OK;
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -