c++編寫無向圖 使用容器Vector編寫鄰接表法
對於無向圖的編寫,傳統方法有兩種:
1、鄰接矩陣法(適合邊數多的無向圖)。
2、鄰接表法(適合邊數較少的無向圖)。
在我轉載的兩篇無向圖編寫的部落格中已經詳細介紹過了。
但是使用鄰接表法時總感覺程式設計起來特別麻煩,並且不直觀,呼叫時需要通過指標的迴圈不方便。
這裡給出一種新的思路,使用容器Vector來編寫鄰接表
vector<vector<type> > 其中的型別type根據無向圖中權重等資訊的不同可以是物件,容器,和常規資料型別。
具體的例子以後有時間的話給出,這裡僅僅提供一個思路。
相關推薦
c++編寫無向圖 使用容器Vector編寫鄰接表法
對於無向圖的編寫,傳統方法有兩種: 1、鄰接矩陣法(適合邊數多的無向圖)。 2、鄰接表法(適合邊數較少的無向圖)。 在我轉載的兩篇無向圖編寫的部落格中已經詳細介紹過了。 但是使用鄰接表法時總感覺程式
無向圖的表示:鄰接矩陣和鄰接表
這裡將一個無向圖用鄰接表和鄰接矩陣表示。 輸入:頂底個數n,圖中的各個邊(用兩個頂點表示)。 輸出:這個無線圖的鄰接矩陣和鄰接表,其中鄰接表中的連結按元素大小升序排列。 先給出一個例子說明。假設有無向圖如下,則其鄰接矩陣和鄰接表如提示框中所示(其實就是下面程式的輸出)。
有向圖 無向圖和建立(陣列表示法)和深度優先訪問
有向圖和無向圖差別就是一句程式碼的差別 ,無向圖中程式碼註釋掉即可 有向圖和有向網的差別也就是權值的差別 有向網需要賦予權值 有向圖有連線自動賦值為1 深度優先採用遞迴方法(參考前面幾篇文章,裡面有具體的深度優先和廣度優先訪問和佇列基本操作) 廣度優先採用佇列 上程
【資料結構】圖的構建(鄰接表法)
#include<iostream> #include<string> #include<queue> using namespace std; #define ERROR 1 #define MAX_VERTEX_NUM 100 typedef struct ArcNod
採用鄰接表儲存結構,編寫一個判別無向圖中任意給定的兩個頂點之間是否存在一條長度為k的簡單路徑的演算法。
問題描述:試基於圖的深度優先搜尋策略編寫一程式,判別以鄰接表儲存的有向圖中是否存在有頂點Vi到Vj頂點的路徑(i!=j)。 輸入:頂點個數,邊數。頂點,邊,要找的頂點i到j。 輸出:若存在i到j路徑,輸出Exist the path,否則輸出Not exist the path。 儲存結構:鄰接表儲存
C語言利用圖的鄰接矩陣的儲存方式實現有向圖和無向圖的深度優先搜尋(DFS)
C語言利用圖的鄰接矩陣的儲存方式實現有向圖和無向圖的深度優先搜尋(DFS) Description 圖採用鄰接矩陣儲存,圖中頂點數為n(0<n<20),頂點資訊為整數,依次為0,1,..,n-1。 編寫函式,輸入圖的型別,0:無向圖,1:有向圖;輸入圖的頂點數、邊數、邊的偶對
C語言利用圖的鄰接矩陣的儲存方式實現有向圖和無向圖的廣度優先搜尋(BFS)
#include <stdio.h> #include <stdlib.h> #define Max_Vetex_Num 100 #define MAXSIZE 20 #define STACK_SIZE 30 typedef struct { int vexs[M
C語言利用圖的鄰接表的儲存方式實現求有向圖的入度和出度以及無向圖的度數
Description 圖採用鄰接表為儲存結構,圖中的頂點數為n(0<n<=20),n個頂點的資訊依次為 0,1,...,n-1。 編寫程式,輸入圖的型別(0:無向圖,1:有向圖)、圖中頂點數、邊數、邊的偶對,建立圖的鄰接表。如果是無向圖,計算並輸出每個頂點的度;如果是有向圖,計
C語言實現鄰接矩陣建立無向圖&圖的深度優先遍歷
/* '鄰接矩陣' 實現無向圖的建立、深度優先遍歷*/ #include <stdio.h> #include <stdlib.h> #define MaxVex 100 //最多頂點個數 #define INFINITY 32768
鄰接矩陣無向圖(二)之 C++詳解
/* * 建立圖(自己輸入資料) */ MatrixUDG::MatrixUDG() { char c1, c2; int i, p1, p2; // 輸入"頂點數"和"邊數" cout << "input vertex number:
鄰接表無向圖(一)之 C語言詳解
/* * 建立鄰接表對應的圖(自己輸入) */ LGraph* create_lgraph() { char c1, c2; int v, e; int i, p1, p2; ENode *node1, *node2; LGraph* pG;
鄰接矩陣無向圖(一)之 C語言詳解
/* * 建立圖(用已提供的矩陣) */ Graph* create_example_graph() { char vexs[] = {'A', 'B', 'C', 'D', 'E', 'F', 'G'}; char edges[][2] = { {'A'
鄰接表無向圖(二)之 C++詳解
/* * 建立鄰接表對應的圖(自己輸入) */ ListUDG::ListUDG() { char c1, c2; int v, e; int i, p1, p2; ENode *node1, *node2; // 輸入"頂點數"和"邊數"
無向圖-鄰接矩陣-寬度優先遍歷-BFS C程式碼實現
一、BFS演算法思路本演算法以無向圖為例,儲存方式採用鄰接矩陣1)將該網以鄰接矩陣的方式儲存,由於這裡的示例採用無向圖,因此它是一個對稱陣2)選取A點為起始點,訪問此頂點,用一個visit的bool型陣列記錄訪問狀態(false表示未被訪問,true表示已訪問)3)從A的未被
判斷無向圖是不是連通的c++程式碼
// DFS.cpp : 定義控制檯應用程式的入口點。// #include "stdafx.h"#include <iostream>#include <vector>using namespace std;bool isconnected(vect
簡單無向圖(c++版)
Graph.h #pragma once #include <string> #include <sstream> #include <fstream> #include <iterator> #include
無向圖 廣度優先遍歷 c語言實現
這裡記錄一下無向圖的廣度優先遍歷,無向圖用鄰接表表示,使用的圖的示例圖如下,關於圖的表示可以參照部落格:無向圖的表示:鄰接矩陣和鄰接表,這裡不再贅述,無向圖的表示的程式碼被封裝到標頭檔案queue.h
無向圖 深度優先遍歷 c語言實現
無向圖的深度優先遍歷的實現,無向圖用鄰接表表示無向圖的表示:鄰接矩陣和鄰接表。 程式使用的示例圖為: 實現要點: 每個節點有三種狀態: -1,還未發現 0,已經發現了,正在處理,還沒有處理
圖(有向圖,無向圖)的鄰接矩陣表示C++實現(遍歷,拓撲排序,最短路徑,最小生成樹) Implement of digraph and undigraph using adjacency matrix
本文實現了有向圖,無向圖的鄰接矩陣表示,並且實現了從建立到銷燬圖的各種操作。 以及兩種圖的深度優先遍歷,廣度優先遍歷,Dijkstra最短路徑演算法,Prim最小生成樹演算法,有向圖的拓撲排序演算法。 通過一個全域性變數控制當前圖為有向圖還是無向圖。 若為無向圖,則生成的
C++】判斷一個圖是否有環 無向圖 有向圖(轉載)
沒有找到原文出處,請參考一下連結: 一、無向圖: 方法1: 如果存在迴路,則必存在一個子圖,是一個環路。環路中所有頂點的度>=2。 n演算法: 第一步:刪除所有度<=1的頂點及相關的邊,並將另外與這些邊相關的其它頂點的度減一。