离散数学之图的矩阵表示及基本运算Word格式.docx
《离散数学之图的矩阵表示及基本运算Word格式.docx》由会员分享,可在线阅读,更多相关《离散数学之图的矩阵表示及基本运算Word格式.docx(6页珍藏版)》请在冰豆网上搜索。
![离散数学之图的矩阵表示及基本运算Word格式.docx](https://file1.bdocx.com/fileroot1/2023-1/5/db8d4572-237c-447d-8aa5-fa9ff1c6f777/db8d4572-237c-447d-8aa5-fa9ff1c6f7771.gif)
iostream.h>
int**g(intn)
{
int**a,i,j;
a=newint*[n];
//分配指针数组
for(i=0;
i<
n;
i++)
a[i]=newint[n];
//分配每个指针所指向的数组
for(j=0;
j<
j++)a[i][j]=0;
voidMatrixMultiple(M*a,M*b,M*m);
voidMatrixAdd(M*a,M*b);
};
voidOperators:
:
CreateMatrix2(M*x,intn,intisOrient)
x->
n=n;
isOrient=isOrient;
ele=g(x->
n);
}
CreateMatrix(M*x)
intn,isOrient;
cout<
<
"
Matrix'
sn="
;
cin>
>
Isthegraphoriented?
1=yes,0=no:
isOrient;
CreateMatrix2(x,n,isOrient);
Input(M*x)
inti,j;
while
(1)
{
cout<
Inputtheedge'
sstart-pointandend-point,-1istofinishinputing:
cin>
i>
j;
if(i==-1||j==-1)break;
x->
ele[i][j]=1;
if(!
x->
isOrient)x->
ele[j][i]=1;
}
Show(M*x)
if(x->
isOrient)
Theorientedmatrix:
"
endl;
else
Theno-orientedmatrix:
i<
i++)
j<
j++)cout<
ele[i][j]<
intOperators:
deg_out(M*x,inti)
intdeg=0;
for(intj=0;
j++)
if(x->
ele[i][j])deg++;
returndeg;
deg_in(M*x,inti)
ele[j][i])deg++;
MatrixMultiple(M*a,M*b,M*temp)
inti,j,k;
a->
b->
j++)
for(k=0;
k<
k++)
temp->
ele[i][j]+=a->
ele[i][k]*b->
ele[k][j];
b->
ele[i][j]=temp->
ele[i][j];
MatrixAdd(M*a,M*b)
inti,j;
a->
ele[i][j]+=b->
Maccessibility(M*a,M*Ma)
Mp,temp;
CreateMatrix2(&
p,a->
n,a->
isOrient);
temp,a->
MatrixAdd(&
p,a);
MatrixAdd(Ma,a);
=a->
MatrixMultiple(a,&
p,&
temp);
MatrixAdd(Ma,&
p);
Show(&
Show(Ma);
Ma->
if(Ma->
ele[i][j])Ma->
voidmain()
Operatorso;
Mx,y;
o.CreateMatrix(&
x);
o.CreateMatrix2(&
y,x.n,x.isOrient);
o.Input(&
o.Show(&
inti;
endl<
Thedeg-outforthepoints"
x.n;
o.deg_out(&
x,i)<
Thedeg-inforthepoints"
o.deg_in(&
o.Maccessibility(&
x,&
y);