實驗四:圖的基本儲存結構及圖的遍歷運算
用臨接矩陣儲存圖,輸出深度優先遍歷的頂點序列:
#include <cstdlib>
#include <iostream>
using namespace std;
typedef struct
{
int n,e;
}Graph;
Graph G;
int Adj[50][50];
int visited[50];
int dfs(Graph G,int v)
{
int w;
visited[v]=1;
printf("%d",v);
for(w=1;w<=G.n;w++)
{
if(Adj[v][w]==1&&visited[v]==0)
dfs(G,w);
}
}
int main(int argc, char *argv[])
{
inti,j;
scanf("%d%d",&G.n,&G.e);
for(i=1;i<=G.n;i++)
for(j=1;j<=G.n;j++)
{
scanf("%d",&Adj[i][j]);
}
for(i=1;i<=G.n;i++)
visited[i]=0;
for(i=1;i<=G.n;i++)
dfs(G,i);
system("PAUSE");
returnEXIT_SUCCESS;
}
用鄰接表儲存圖,輸出深度優先遍歷的頂點序列
#include <cstdlib>
#include <iostream>
using namespace std;
typedef struct ArcNode//表結點的型別定義
{
int adjvex;//該弧所指向的頂點的位置
struct ArcNode *nextarc;//指向下一弧的指標
}ArcNode;
typedef struct
{
ArcNode *firstarc;//指向第一條依附該頂點的弧的指標
}AdjList[50]; //頭結點
typedef struct
{
int vexnum,arcnum,weight;
AdjList vertices;
}Graph; //圖的儲存結構定義
Graph g;
int n,e;
int visited[50];
int dfs(Graph g,int v)
{
int w;
ArcNode*p;
visited[v]=1;
printf("%d",v);
for(p=g.vertices[v].firstarc;p;p=p->nextarc)
if(w=p->adjvex&&visited[w]==0)dfs(g,w);
}
int dfstraves(Graph g)
{
int v;
memset(visited,0,sizeof(visited));
for(v=0;v<n;++v)
if(visited[v]==0) dfs(g,v);
}
int create(Graph g)
{
inti,j;
ArcNode*p;
for(i=0;i<n;i++)
{
g.vertices[i].firstarc=NULL;
}
for(i=0;i<e;i++)
{
scanf("%d%d%d",&g.vexnum,&g.arcnum,&g.weight);
p=g.vertices[g.vexnum].firstarc;
while(p!=NULL) p=p->nextarc;
p=(ArcNode *)malloc(sizeof(ArcNode));//p 原來指向NULL現在要方一些資料,必須有空間
p->adjvex=g.arcnum;
p->nextarc=NULL;
}
}
int main(int argc, char *argv[])
{
scanf("%d%d",&n,&e);
create(g);
dfstraves(g);
system("PAUSE");
returnEXIT_SUCCESS;
}
相關推薦
實驗四:圖的基本儲存結構及圖的遍歷運算
用臨接矩陣儲存圖,輸出深度優先遍歷的頂點序列: #include <cstdlib> #include <iostream> using namespace std; typedef struct { int n,e; }Graph; Graph G; int Adj[
圖的儲存結構及遍歷演算法
一、圖的儲存結構 1.1 鄰接矩陣 圖的鄰接矩陣儲存方式是用兩個陣列來表示圖。一個一維陣列儲存圖中頂點資訊,一個二維陣列(鄰接矩陣)儲存圖中的邊或弧的資訊。 設圖G有n個頂點,則鄰接矩陣是一個n*n的方陣,定義為: 看一個例項,下圖左就
【資料結構作業五】以鄰接表作儲存結構,廣度遍歷圖的優先搜尋序列
#include <iostream> #define MVNum 100 #define MAXQSIZE 100 using namespace std; typedef char ElemType; typedef int QElemType; typed
資料結構 筆記:二叉樹結構的層次遍歷
二叉樹的遍歷 -二叉樹的遍歷(Traversing Binay Tree)是指從根節點觸發,按照某種次序一次訪問二叉樹中的所有結點,使得每個結點被訪問一次,且僅被訪問一次。 通用樹結構的層次遍歷演算法是否可以用在二叉樹結構上? 如果可以,程式碼需要做怎樣的改動? 提供一組遍歷相關的函
圖的兩種儲存結構及四種形態——鄰接矩陣、鄰接表;有向圖、無向圖、有向網、無向網。
宣告: 程式碼中有大量的註釋,所以此處就不再作出大量的解釋了。 一 :鄰接矩陣儲存結構 1.首先是各種型別與巨集的定義: 1 #include <iostream> 2 using namespace std; 3 //無窮大 4 #define INFINITY IN
實驗四:Tensorflow實現了四個對抗圖像制作算法--readme
嘗試 pda mode mini score one 而在 craft iter 文章來源:Github Four adversarial image crafting algorithms are implemented with Tensorflow. The four
資料結構 筆記:圖的儲存結構
基本思想 -用一維陣列儲存頂點:描述頂點相關的資料 -用二維陣列儲存邊:描述頂點間的關係和權 鄰接矩陣法 -設圖A = (V,E)是一個有n個頂點的圖,圖的鄰接矩陣為Edge[n][n],則: Edge[i][i] = w,w權值,i和j連線;空,i == j或i 和j不連線
資料結構之圖篇(2):圖的基本操作 深度和廣度遍歷
程式碼實現 main.cpp(主函式) #include <iostream> #include "CMap.h" using namespace std; /** 圖的的儲存:鄰接矩陣 圖的遍歷:深度+廣度 A / \
資料結構:線性表的順序儲存結構及實現
線性表的順序儲存結構——順序表 線性表的順序儲存結構稱為順序表 順序表的實現 const int MaxSize=100; template<class DataType> class SeqList { public: SeqList(){lengt
資料結構 圖的鄰接表儲存結構及DFS/BFS遍歷
//鄰接表 #include<iostream> #include<cstdio> #include<cstdlib> #include<cstring> #define INF 999 using namespace std; typedef
圖的儲存結構:鄰接矩陣與鄰接表(稠密圖與稀疏圖)
稠密圖用 鄰接矩陣儲存 稀疏圖用 鄰接表儲存 原因: 鄰接表只儲存非零節點,而鄰接矩陣則要把所有的節點資訊(非零節點與零節點)都儲存下來。 稀疏圖的非零節點不多,所以選用鄰接表效率高,如果選用鄰接矩陣則效率很低,矩陣中大多數都會是零節點! 稠密圖的非零界點多,零節點少,選
C語言實現圖的鄰接矩陣儲存結構及深度優先遍歷和廣度優先遍歷
DFS的核心思想在於對訪問的鄰接節點進行遞迴呼叫;BFS的核心思想在於建立了一個鄰接節點的佇列。 在Dev C++中除錯執行通過。 用下圖進行了測試。 #include <stdio.h> #define MaxVertexNum 50 #defin
資料結構:圖的儲存結構之鄰接矩陣
一、圖(Graph)是由頂點的有窮非空集合和頂點之間邊的集合組成,通常表示為:G(V,E),其中,G表示一個圖,V是圖G中頂點的集合,E是圖G中邊的集合。在圖中的資料元素,我們稱之為頂點(Vertex),頂點集合有窮非空。在圖中,任意兩個頂點之間都可能有關係,頂點之
資料結構例程——圖的鄰接矩陣儲存結構及演算法
#include <stdio.h> #include <malloc.h> #define MAXV 100 /*最大頂點數設為100*/ #define LIMI
2017-2018-1 20155216 實驗四:外設驅動程序設計
加載 mar 結果 嵌入式 全屏 嵌入 image 開發 images 2017-2018-1 20155216 實驗四:外設驅動程序設計 實驗四外設驅動程序設計-1 實驗要求: 學習資源中全課中的“hqyj.嵌入式Linux應用程序開發標準教程.pdf”中的第十一章 提交
web API簡介(四):客戶端儲存之IndexedDB API
特性 通知 name com 模式 upgrade doesn 需要 code 概述 前篇:web API簡介(三):客戶端儲存之Web Storage API 客戶端儲存從某一方面來說和動態網站差不多。動態網站是用服務端來儲存數據,而客戶端儲存是用客戶端來儲存數據。 In
實驗四:SerU的搭建
SerU的搭建實驗目的:掌握SerU的搭建過程,通過SerU提供的ftp登錄方式來訪問,及實現上傳下載的功能實驗前準備:搭建IIS(過程省略)實驗過程:通過WMare提供的真實機與虛擬機的共享功能,把SerU 6.402和WinwebMail v3.7.11拷貝到虛擬機中請看如下的截圖及附帶的說明 雙擊Ser
實驗四:shell編程(2)
AR shift ber AC info 作用 name source 幫助信息 1. shell 變量基本用法及常用符號使用 此部分要求寫出實現相應要求的 shell 命令,截圖顯示 (1)將主提示符改為用戶的主目錄名 (2)將字符串 DOS file c:&
Spring 基礎教程之四:JavaBean基本配置詳解
一:xml 裝配JavaBean屬性含義: 1.id:指定該Bean 的唯一標識。 2.class:指定該Bean 的全限定名。 3.name:為該Bean 指定一到多個別名。多個別名可以用“,”和“;”分割。
SDN控制器之OVN實驗四:配置OVN負載均衡器
網路拓撲 基於我的上一篇文章,接下來我將介紹OVN的負載平衡特性。 但在開始之前,我們來看看上一個實驗中的配置。 實驗物理網路拓撲: OVN 邏輯網路拓撲: OVN 負載均衡器 OVN負載均衡器旨在為OVN邏輯網路空間內的工作負載提