邻接矩阵 有向无向 快乐考研

数据结构 图 邻接矩阵

这是无向图的代码

#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.

阅读更多
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭
关闭