最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C++實現(xiàn)圖的鄰接矩陣存儲和廣度、深度優(yōu)先遍歷實例分析

 更新時間:2015年04月20日 11:35:18   作者:司青  
這篇文章主要介紹了C++實現(xiàn)圖的鄰接矩陣存儲和廣度、深度優(yōu)先遍歷,實例分析了C++實現(xiàn)圖的遍歷技巧,非常具有實用價值,需要的朋友可以參考下

本文實例講述了C++實現(xiàn)圖的鄰接矩陣存儲和廣度、深度優(yōu)先遍歷的方法。分享給大家供大家參考。具體如下:

示例:建立如圖所示的無向圖

由上圖知,該圖有5個頂點,分別為a,b,c,d,e,有6條邊.
示例輸入(按照這個格式輸入):

5
6
abcde
0 1 1
0 2 1
0 3 1
2 3 1
2 4 1
1 4 1

輸入結(jié)束(此行不必輸入)

注:0 1 1表示該圖的第0個頂點和第1個定點有邊相連,如上圖中的a->b所示
      0 2 1表示該圖的第0個頂點和第2個定點有邊相連,如上圖中的a->c所示
      2 3 1表示該圖的第2個頂點和第3個定點有邊相連,如上圖中的c->d所示

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

#include <stdio.h>
#define MAX_GRAPH 100
#define MAX_QUEUE 30
typedef struct
{
 char vex[MAX_GRAPH]; /* 頂點 */ 
 int edge[MAX_GRAPH][MAX_GRAPH]; /* 鄰接矩陣 */
 int n; /* 當前的頂點數(shù) */
 int e; /* 當前的邊數(shù) */
}GRAPH;
void Create(GRAPH *G); /* 圖的鄰接矩陣表示法 */
void BFS(GRAPH *G,int k); /* 廣度優(yōu)先遍歷 */ 
void DFS(GRAPH *G,int k); /* 深度優(yōu)先遍歷 */
int visited[MAX_GRAPH];
int main(int argc, char *argv[])
{
 int i;
 for(i = 0 ; i < MAX_QUEUE ; ++i)
  visited[i] = 0;
 GRAPH G;
 Create(&G);
/* BFS(&G,0);*/
 DFS(&G,0);
  
 return 0;
}
void BFS(GRAPH *G,int k)
{
 int queue[MAX_QUEUE]; /* 隊列 */
 int front = -1,rear = -1,amount = 0;
 int visited[MAX_GRAPH]; /* 標記已經(jīng)訪問過的元素 */
 int i,j;
 
 for(i = 0 ; i < MAX_GRAPH ; ++i)
  visited[i] = 0;
  
 printf("訪問頂點%c\n",G->vex[k]);
 visited[k] = 1;
 
 rear = (rear + 1) % MAX_QUEUE; /* 入隊操作 */
 queue[rear] = k;
 front = rear;
 ++amount;
 
 while(amount > 0)
 {
  i = queue[front]; /* 出隊操作 */
  front = (front + 1) % MAX_QUEUE;
  --amount;
  
  for(j = 0 ; j < G->n ; ++j)
  {
   if(G->edge[i][j] != 0 && visited[j] == 0)
   {
    printf("訪問頂點%c\n",G->vex[j]);
    visited[j] = 1;
    
    rear = (rear + 1) % MAX_QUEUE; /* 入隊 */
    queue[rear] = j;
    ++amount;
   }
  }
 }
 printf("遍歷結(jié)束\n"); 
}
void DFS(GRAPH *G,int k)
{
 int j;
 printf("訪問頂點:%c\n",G->vex[k]);
 visited[k] = 1;
 
 for(j = 0 ; j < G->n ; ++j)
 {
  if(G->edge[k][j] != 0 && visited[j] == 0)
   DFS(G,j);
 }
}
void Create(GRAPH *G)
{
 printf("輸入頂點數(shù):\n");
 scanf("%d",&G->n);
 printf("輸入邊數(shù):\n");
 scanf("%d",&G->e);
 
 getchar();
 
 int i,j,k,w;
 printf("請輸入端點(char型):\n");
 for(i = 0 ; i < G->n ; ++i) /* 建立表頭 */
  scanf("%c",&G->vex[i]);
  
 for(i = 0 ; i < G->n ; ++i) /* 初始化鄰接矩陣 */
  for(j = 0 ; j < G->n ; ++j)
   G->edge[i][j] = 0;
 
 printf("請輸入邊:\n"); 
 for(k = 0 ; k < G->e ; ++k)
 {
  scanf("%d%d%d",&i,&j,&w); /* 輸入(vi,vj)上的權(quán)w */
  G->edge[i][j] = w;
  G->edge[j][i] = w;
 }
}

希望本文所述對大家的C++程序設(shè)計有所幫助。

相關(guān)文章

  • C語言的函數(shù)概念與規(guī)則你了解嗎

    C語言的函數(shù)概念與規(guī)則你了解嗎

    這篇文章主要介紹了C語言中的函數(shù)概念與規(guī)則,本文給大家介紹的非常詳細,具有參考借鑒價值,需要的朋友可以參考下,希望能給你帶來幫助
    2021-08-08
  • C與C++動態(tài)分配二維數(shù)組的實現(xiàn)方法

    C與C++動態(tài)分配二維數(shù)組的實現(xiàn)方法

    下面小編就為大家?guī)硪黄狢與C++動態(tài)分配二維數(shù)組的實現(xiàn)方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-12-12
  • C語言報錯:Format String Vulnerability的多種解決方案

    C語言報錯:Format String Vulnerability的多種解決方案

    Format String Vulnerability(格式化字符串漏洞)是C語言中常見且嚴重的安全漏洞之一,它通常在程序使用不受信任的輸入作為格式化字符串時發(fā)生,本文將詳細介紹Format String Vulnerability的產(chǎn)生原因,提供多種解決方案,需要的朋友可以參考下
    2024-06-06
  • 淺談C++ 類的實例中 內(nèi)存分配詳解

    淺談C++ 類的實例中 內(nèi)存分配詳解

    下面小編就為大家?guī)硪黄獪\談C++ 類的實例中 內(nèi)存分配詳解。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-12-12
  • C語言 實現(xiàn)N階乘的程序代碼

    C語言 實現(xiàn)N階乘的程序代碼

    本篇文章是對c語言中實現(xiàn)N階乘的程序代碼進行了詳細的分析介紹,需要的朋友參考下
    2013-05-05
  • C#?CLR學習?C++使用namespace實例詳解

    C#?CLR學習?C++使用namespace實例詳解

    這篇文章主要為大家介紹了C#?CLR學習?C++使用namespace實例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-09-09
  • Linux?C/C++?timeout命令實現(xiàn)運行具有時間限制功能

    Linux?C/C++?timeout命令實現(xiàn)運行具有時間限制功能

    inux?timeout命令的一個屬性是時間限制??梢詾槿魏蚊钤O(shè)置時間限制。如果時間到期,命令將停止執(zhí)行,這篇文章主要介紹了Linux?C/C++?timeout命令實現(xiàn)(運行具有時間限制),需要的朋友可以參考下
    2023-02-02
  • C語言之平衡二叉樹詳解

    C語言之平衡二叉樹詳解

    平衡二叉樹是具有平衡屬性的有序二叉樹,本文主要介紹了C語言中的平衡二叉樹,具有一定的參考價值,需要的小伙伴可以參考閱讀
    2023-04-04
  • C++面試八股文之位運算問題詳解

    C++面試八股文之位運算問題詳解

    這篇文章主要為大家介紹了C++面試八股文之位運算的問題解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-06-06
  • C語言實現(xiàn)職工管理系統(tǒng)

    C語言實現(xiàn)職工管理系統(tǒng)

    這篇文章主要為大家詳細介紹了C語言實現(xiàn)職工管理系統(tǒng),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-11-11

最新評論

城市| 嘉黎县| 泸水县| 巴彦淖尔市| 长武县| 元朗区| 化德县| 高雄市| 甘肃省| 若尔盖县| 民乐县| 白银市| 综艺| 峨山| 且末县| 马山县| 海丰县| 驻马店市| 祁门县| 海淀区| 铜川市| 湛江市| 延吉市| 南投县| 宁陵县| 武强县| 金沙县| 阜阳市| 周至县| 冷水江市| 深州市| 博白县| 维西| 沁阳市| 吴忠市| 无为县| 鹤庆县| 青浦区| 双桥区| 嘉定区| 平远县|