生活随笔
收集整理的這篇文章主要介紹了
邻接表转换邻接矩阵
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
鄰接表轉換鄰接矩陣
無向圖轉矩陣,輸入邊
#include<iostream>
using namespace std
;
struct bian
{int data
;bian
*next
;
};
struct dian
{int ch
;bian
*to
;
};
class zb
{
public:zb(int n
,int e
);~zb(){};void linjiebiao(int n
);void zhuanhuan(int n
);void linjiejuzhen(int n
);
private:dian a
[10];int A
[10][10];int N
,E
;
};
zb
::zb(int n
,int e
)
{int ii
;for(ii
=0;ii
<n
;ii
++){a
[ii
].ch
=ii
;a
[ii
].to
=NULL;}int i
,j
;bian
*s
,*g
;for(ii
=0;ii
<e
;ii
++){cout
<<"逐一輸入邊的兩端:"<<endl
;cin
>>i
>>j
;s
=new bian
;s
->data
=j
;s
->next
=a
[i
].to
;a
[i
].to
=s
;g
=new bian
;g
->data
=i
;g
->next
=a
[j
].to
;a
[j
].to
=g
;}
}
void zb
::linjiebiao(int n
)
{cout
<<"鄰接表:"<<endl
;bian
*s
;for(int i
=0;i
<n
;i
++){s
=a
[i
].to
;cout
<<"V"<<i
;while(s
!=NULL){cout
<<"->";cout
<<s
->data
;s
=s
->next
;}cout
<<endl
;}
}
void zb
::zhuanhuan(int n
)
{for(int i
=0;i
<n
;i
++)for(int ii
=0;ii
<n
;ii
++)A
[i
][ii
]=0;bian
*s
;int g
;for(i
=0;i
<n
;i
++){s
=a
[i
].to
;while(s
!=NULL){g
=s
->data
;A
[i
][g
]=1;s
=s
->next
;}}
}
void zb
::linjiejuzhen(int n
)
{cout
<<"轉換后的鄰接矩陣:"<<endl
;for(int i
=0;i
<n
;i
++){for(int ii
=0;ii
<n
;ii
++)cout
<<A
[i
][ii
]<<" ";cout
<<endl
;}
}
int main()
{int m
=0,n
,e
;cout
<<"無向圖"<<endl
;cout
<<"請輸入點數(n<=10):";cin
>>n
;m
=0.5*n
*(n
-1);cout
<<"請輸入邊數(e<="<<m
<<"):";cin
>>e
;zb
l(n
,e
);cout
<<endl
;l
.linjiebiao(n
);cout
<<endl
;l
.zhuanhuan(n
);l
.linjiejuzhen(n
);cout
<<endl
;return 0;
}
總結
以上是生活随笔為你收集整理的邻接表转换邻接矩阵的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。