鄰接矩陣 有向無向 快樂考研

數據結構 圖 鄰接矩陣

這是無向圖的代碼

#include<iostream>
using namespace std;
int main()
{
    int arr[6][6];
    int data[14][2]={{1,2},{2,1},{1,5},{5,1},
                    {2,3},{3,2},{2,4},{4,2},
                    {3,4},{4,3},{3,5},{5,3},
                    {4,5},{5,4}

    };
    for(int i=0;i<6;i++)//矩陣置0 
    for(int j=0;j<6;j++)
    arr[i][j]=0;
    for(int i=0;i<14;i++)
    for(int j=0;j<6;j++)//這兩句話(jk)根本用不到 
    for(int k=0;k<6;k++)
    {
        int tmpi,tmpj;
        tmpi=data[i][0];
        tmpj=data[i][1];//如上面data所寫,【14】【2】 ,所以總共就兩行 
        arr[tmpi][tmpj]=1; 
    }
    cout<<"無向圖矩陣"<<endl;
    for(int i=1;i<6;i++)
    {
        for(int j=1;j<6;j++)
        cout<<"["<<arr[i][j]<<"]";
        cout<<endl; 
    } 
    return 0;
}

結果是:
這裏寫圖片描述
接下來是有向圖的代碼

#include<iostream>
using namespace std;
int main(){
    int arr[5][5];
    int data[5][2]={{1,2},{2,1},{2,3},{2,4},{4,3}};
    for(int i=0;i<5;i++)
    for(int j=0;j<5;j++)
    arr[i][j]=0;
    for(int i=0;i<5;i++)
    for(int j=0;j<5;j++)
    {
        int tmpi,tmpj;
        tmpi=data[i][0];
        tmpj=data[i][1];
        arr[tmpi][tmpj]=1;

    }
    cout<<"有向矩陣圖"<<endl;
    for(int i=1;i<5;i++)
    {
        for(int j=1;j<5;j++)
        cout<<"["<<arr[i][j]<<"]";
        cout<<endl;
     } 
   return 0;
}

這裏寫圖片描述
所以, 看得出來, 有向無向, 代碼都差不多的 ,無向的代碼在int data【】【】後面 數據都是對應的 但是有向的代碼裏 int data【】【】後面的數字沒有啥關係 這就是這倆區別;所以對於圖的鄰接矩陣,大概就是 int arr 然後把arr裏的數據都等於0,再申請倆臨時的tmpi和tmpj,用於記錄矩陣中元素又因爲data只有兩行 ,所以只要設data【i】【0】和data【i】【1】即可讀入,然後相連的置1.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章