1. 程式人生 > >圖的鄰接表儲存 深度優先遍歷 廣度優先遍歷 C語言實現

圖的鄰接表儲存 深度優先遍歷 廣度優先遍歷 C語言實現

ALGraph.h

  1. #pragma once
  2. #include "Queue.h"
  3. /************************************************************************/
  4. /* 圖的鄰接表儲存結構                                                   */
  5. /************************************************************************/
  6. #define MaxVertexNum 100  
  7. #define QueueSize 30   
  8. bool visited[MaxVertexNum];      
  9. typedefchar VertexType;    
  10. typedefint EdgeType;    
  11. typedefstruct node     //邊表結點  
  12. {    
  13.     int adjvex;         //鄰接點域  
  14.     struct node* next;  //域鏈  
  15.     //若是要表示邊上的權,則應增加一個數據域  
  16. }EdgeNode;    
  17. typedefstruct vnode    //頂點邊結點  
  18. {    
  19.     VertexType vertex;  //頂點域  
  20.     EdgeNode* firstedge;//邊表頭指標  
  21. }VertexNode;   
  22. typedef VertexNode AdjList[MaxVertexNum];   //AdjList是鄰接表型別  
  23. typedefstruct
  24. {    
  25.     AdjList adjlist;    //鄰接表  
  26.     int n;              //圖中當前頂點數
  27.     int e;              //圖中當前邊數  
  28. }ALGraph;               //對於簡單的應用,無須定義此型別,可直接使用AdjList型別  
  29. ALGraph* initALGraph();   
  30. bool DFS(ALGraph* a, int i);  
  31. bool

    相關推薦

    鄰接儲存 深度優先 廣度優先 C語言實現

    ALGraph.h #pragma once #include "Queue.h" /************************************************************************/ /

    演算法與資料結構基礎8:C++實現有向——鄰接儲存

    前面實現了連結串列和樹,現在看看圖。 連結串列是一對一的對應關係; 樹是一對多的對應關係; 圖是多對多的對應關係。 圖一般有兩種儲存方式,鄰接表和鄰接矩陣。 先看鄰接表。 鄰接表就是將圖中所有的點用一個數組儲存起來,並將此作為一個連結串列的頭, 連結串列中儲存跟這個點相鄰的

    順序的建立和初始化過程詳解(C語言實現

    順序表存放資料的特點和陣列這種資料型別完全吻合,因此順序表的實現使用的是陣列。需要注意的是,使用陣列實現順序表時,一定要預先申請足夠大的記憶體空間,避免因儲存空間不足,造成資料溢位,導致不必要的程式錯誤甚至崩潰。 在建立順序表時,除了預先申請記憶體空間,還需要實時記錄順序表的長度和順序表本身申請的記憶體大

    資料結構——PTA 鄰接矩陣儲存深度優先鄰接儲存廣度優先

    廣度優先與深度優先是遍歷圖的兩種基本方法,大致的思想是DFS為遞迴,而BFS是佇列。 這裡給出PTA兩道題目的答案,方法很基本,但第三個形參還是第一次見,去網上搜了搜給出的說法是呼叫函式的地址,但個人感覺就是呼叫這個函式。。。 下面給出兩段程式碼 void BFS ( LGraph

    基於鄰接儲存深度優先廣度優先

    一.深度優先遍歷是連通圖的一種遍歷方法:   設x是當前被訪問頂點,在對x做過訪問標記後,選擇一條從x出發的未檢測過的邊(x, y)。若發現頂點y已訪問過,則重新選擇另一條從x出發的未檢測過的邊,否則沿邊(x,y) 到達未曾訪問過的y,對y訪問並將其標記為已訪問過;

    鄰接儲存深度優先廣度優先非遞迴演算法

      之前在網上找圖的深度優先廣度優先的非遞迴演算法,前幾個都是以鄰接矩陣形式儲存的圖。所以自己就當練練手,寫了以鄰接表形式儲存的圖的兩種遍歷   兩種遍歷關鍵是對於已遍歷的元素的儲存。   深度優先利用了棧先進後出

    6-2 鄰接儲存廣度優先 (20 分)

    試實現鄰接表儲存圖的廣度優先遍歷。 函式介面定義: void BFS ( LGraph Graph, Vertex S, void (*Visit)(Vertex) ); 其中LGraph是鄰接表儲存的圖,定義如下: /* 鄰接點的定義 */ typedef struc

    6-2 鄰接儲存廣度優先 (20 分)第七章----基本概念-計算機17級

    6-2 鄰接表儲存圖的廣度優先遍歷 (20 分) 試實現鄰接表儲存圖的廣度優先遍歷。 函式介面定義: void BFS ( LGraph Graph, Vertex S, void (*Visit)(Vertex) ); 其中LGraph是鄰接表儲存的圖,定

    6-1 鄰接儲存廣度優先 (20 分)

    6-1 鄰接表儲存圖的廣度優先遍歷 (20 分) 試實現鄰接表儲存圖的廣度優先遍歷。 函式介面定義: void BFS ( LGraph Graph, Vertex S, void (*Visit)(Vertex) );

    C語言實現鄰接矩陣儲存結構及深度優先廣度優先

    DFS的核心思想在於對訪問的鄰接節點進行遞迴呼叫;BFS的核心思想在於建立了一個鄰接節點的佇列。 在Dev C++中除錯執行通過。 用下圖進行了測試。 #include <stdio.h> #define MaxVertexNum 50 #defin

    建立有向鄰接深度優先廣度優先的遞迴與非遞迴演算法,判斷是否是有向無環,並輸出一種拓撲序列

    /*(1)輸入一組頂點,建立有向圖的鄰接表,進行DFS(深度優先遍歷)和BFS(廣度優先遍歷)。 寫出深度優先遍歷的遞迴和非遞迴演算法。 (2)根據建立的有向圖,判斷該圖是否是有向無環圖,若是,則輸出其一種拓撲有序序列。*/ #include<stdio.h>

    6-16 鄰接儲存廣度優先

    鄰接表儲存圖的廣度優先遍歷 (20 分) 試實現鄰接表儲存圖的廣度優先遍歷。 函式介面定義: void BFS ( LGraph Graph, Vertex S, void (*Visit)(Vertex) ); 其中LGraph是鄰接表儲存的圖,定義如下: /* 鄰

    ——鄰接表示(實現深度優先廣度優先

    程式碼有部分解析:#include<iostream> #include<stdio.h> #include<stdlib.h> #include<iomanip> using namespace std; #define T

    找出中的所有連通子(建立鄰接深度優先查詢子

    /* 利用深度優先遍歷,找出圖中的所有連通圖(子圖) * 圖用鄰接表表示 *graph[], 利用邊的資訊來建立adjacency lists */ #include<stdio.h> #include<stdlib.h> #define MA

    資料結構 鄰接儲存結構及DFS/BFS

    //鄰接表 #include<iostream> #include<cstdio> #include<cstdlib> #include<cstring> #define INF 999 using namespace std; typedef

    C語言實現鄰接矩陣建立無向&深度優先

    /* '鄰接矩陣' 實現無向圖的建立、深度優先遍歷*/ #include <stdio.h> #include <stdlib.h> #define MaxVex 100 //最多頂點個數 #define INFINITY 32768

    有向鄰接求入度,出度,刪除、增加頂點,弧,深度及其生成樹等

    #include "stdio.h"#include "math.h"#include"malloc.h"#include "stack"#include <queue>#define OK 1#define ERROR -1#define MAX 32764 /

    資料結構之鄰接儲存,DFS和BFS

         來看下面的一個簡單的圖,       那麼這樣的一個圖,我們應該用什麼儲存結構來儲存它呢?常用的是鄰接矩陣和鄰接表,這裡鄰接矩陣不做講解,如下所有程式碼都是以鄰接表作為儲存結構,所以這裡就只講解下鄰接表。那麼什麼是鄰接表呢?如何構造呢?       鄰接表是一

    基於鄰接儲存的DFS與BFS

    #include <iostream> #include <stdio.h> #include <stdlib.h> #include <queue> using namespace std; #define MAXNODE

    鄰接深度優先以及廣度優先

    #include <stdio.h> #include <stdlib.h> #define MAX 20 int visited[20]; typedef struct ArcNode{ int adjvex; struct ArcNode