欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C語言實現(xiàn)圖的鄰接矩陣存儲操作

 更新時間:2018年08月18日 09:00:36   作者:data_heng  
這篇文章主要為大家詳細(xì)介紹了C語言實現(xiàn)圖的鄰接矩陣存儲操作,具有一定的參考價值,感興趣的小伙伴們可以參考一下

利用鄰接矩陣容易判定任意兩個頂點之間是否有邊(或?。┫噙B,并容易求得各個頂點的度。

c語言代碼實現(xiàn)如下:

#include<stdio.h>
#include<stdlib.h>
#define MAX_VER_NUM 50
typedef char VertexType;
typedef enum
{
 DG,UDG
}GraphType;
typedef struct
{
 VertexType vexs[MAX_VER_NUM]; //頂點向量
 int arcs[MAX_VER_NUM][MAX_VER_NUM]; //鄰接矩陣
 int vexnum,arcnum;   //圖的當(dāng)前頂點數(shù)和弧數(shù)
 GraphType type;   //圖的種類標(biāo)志
}MGraph; 
 
//根據(jù)名稱得到指定頂點在頂點集合中的下標(biāo)
//vex 頂點
//return 如果找到,則返回下標(biāo),否則,返回0
int getIndexOfVexs(char vex,MGraph *MG)
{
 int i;
 for(i=1;i<=MG->vexnum;i++)
 {
 if(MG->vexs[i]==vex)
 {
 return i;
 }
 }
 return 0;
}
 
//創(chuàng)建鄰接矩陣
void create_MG(MGraph *MG)
{
 int i,j,k;
 int v1,v2,type;
 char c1,c2;
 printf("Please input graph type DG(0) or UDG(1):");
 scanf("%d",&type);
 if(type==0)
 {
 MG->type=DG;
 }
 else if(type==1)
 {
 MG->type=UDG;
 }
 else
 {
 printf("Please input correct graph type DG(0) or UDG(1)!");
 return;
 }
 printf("Please input vexnum:");
 scanf("%d",&MG->vexnum);
 printf("Please input arcnum:");
 scanf("%d",&MG->arcnum);
 getchar();
 for(i=1;i<=MG->vexnum;i++)
 {
 printf("Please input %dth vex(char):",i);
 scanf("%c",&MG->vexs[i]);
 getchar();
 }
 //初始化鄰接矩陣
 for(i=1;i<=MG->vexnum;i++)
 {
 for (j=1;j<=MG->vexnum;j++)
 {
 MG->arcs[i][j]=0;
 }
 }
 //輸入邊的信息,建立鄰接矩陣
 for(k=1;k<=MG->arcnum;k++)
 {
 printf("Please input %dth arc v1(char) v2(char):",k);
 scanf("%c %c",&c1,&c2);
 v1=getIndexOfVexs(c1,MG);
 v2=getIndexOfVexs(c2,MG);
 if(MG->type==-1)
 {
 MG->arcs[v1][v2]=MG->arcs[v2][v1]=1;
 }
 else
 {
 MG->arcs[v1][v2]=1;
 }
 getchar();
 }
}
 
//打印鄰接矩陣和頂點信息
void print_MG(MGraph MG)
{
 int i,j;
 if(MG.type==DG)
 {
 printf("Graph type: Direct graph\n");
 }
 else
 {
 printf("Graph type: Undirect graph\n");
 }
 printf("Graph vertex number: %d\n",MG.vexnum);
 printf("Graph arc number: %d\n",MG.arcnum);
 printf("Vertex set:");
 for(i=1;i<=MG.vexnum;i++)
 {
 printf("%c",MG.vexs[i]);
 }
 printf("\nAdjacency Matrix:\n");
 for(i=1;i<=MG.vexnum;i++)
 {
 for(j=1;j<=MG.vexnum;j++)
 {
 printf("%d",MG.arcs[i][j]);
 }
 printf("\n");
 }
}
 
//主函數(shù)
int main(void)
{
 MGraph MG;
 create_MG(&MG);
 print_MG(MG);
 return 0;
}

得到的結(jié)果如下圖所示:

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • C++利用類實現(xiàn)矩陣的數(shù)乘,乘法以及點乘

    C++利用類實現(xiàn)矩陣的數(shù)乘,乘法以及點乘

    這篇文章主要為大家詳細(xì)介紹了C++如何利用類實現(xiàn)矩陣的數(shù)乘,乘法以及點乘,文中的示例代碼講解詳細(xì),對我們學(xué)習(xí)C++有一定幫助,需要的可以參考一下
    2022-11-11
  • C語言實現(xiàn)點菜系統(tǒng)

    C語言實現(xiàn)點菜系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了C語言實現(xiàn)點菜系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-06-06
  • C語言光標(biāo)旋轉(zhuǎn)與倒計時功能實現(xiàn)示例詳解

    C語言光標(biāo)旋轉(zhuǎn)與倒計時功能實現(xiàn)示例詳解

    這篇文章主要為大家介紹了C語言實現(xiàn)光標(biāo)旋轉(zhuǎn)與倒計時功能的示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步早日升職加薪
    2021-11-11
  • 淺析C++中類模板的用法

    淺析C++中類模板的用法

    C++類模板是一種用于創(chuàng)建通用類的工具,它允許我們定義一個通用類,支持多種類型。本文就來簡單講講它的具體使用吧,感興趣的可以了解一下
    2023-04-04
  • C++中vector容器的用法

    C++中vector容器的用法

    在c++中,vector是一個十分有用的容器。這篇文章主要介紹了C++ vector容器的用法的相關(guān)資料,非常不錯具有參考借鑒價值,需要的朋友可以參考下
    2016-10-10
  • 基于Sizeof與Strlen的區(qū)別以及聯(lián)系的使用詳解

    基于Sizeof與Strlen的區(qū)別以及聯(lián)系的使用詳解

    本篇文章是對Sizeof與Strlen的區(qū)別以及聯(lián)系的使用進(jìn)行了詳細(xì)的介紹。需要的朋友參考下
    2013-05-05
  • c++ 如何在libuv中實現(xiàn)tcp服務(wù)器

    c++ 如何在libuv中實現(xiàn)tcp服務(wù)器

    這篇文章主要介紹了c++ 如何在libuv中實現(xiàn)tcp服務(wù)器,幫助大家更好的理解和使用libuv,感興趣的朋友可以了解下
    2021-02-02
  • C++基礎(chǔ) class、struct、union詳細(xì)

    C++基礎(chǔ) class、struct、union詳細(xì)

    這篇文章主要 給大家介紹的是C++基礎(chǔ) class、struct、union,主要由三部分組成,分別是、類class、結(jié)構(gòu)體struct、共用體union,需要的朋友可以參考一下
    2021-09-09
  • C語言打印輸出楊輝三角

    C語言打印輸出楊輝三角

    這篇文章主要為大家詳細(xì)介紹了C語言打印輸出楊輝三角,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-12-12
  • 詳解C++11強(qiáng)類型枚舉

    詳解C++11強(qiáng)類型枚舉

    這篇文章主要介紹了C++11強(qiáng)類型枚舉的相關(guān)資料,幫助大家更好的理解和學(xué)習(xí)c++11,感興趣的朋友可以了解下
    2020-08-08

最新評論