1. 程式人生 > >【資料結構】以鄰接矩陣作儲存結構,求連通分量的個數,設計演算法求圖G的深度,深度優先序列輸出

【資料結構】以鄰接矩陣作儲存結構,求連通分量的個數,設計演算法求圖G的深度,深度優先序列輸出

#include <iostream>
#define  MaxVerNum  100   
typedef char ElemType;
using namespace std; 
typedef struct 
{    ElemType vexs[MaxVerNum];
     int  arcs[MaxVerNum][MaxVerNum];
     int  vernum, arcnum;
}AMGraph;
int LocateVex(AMGraph G,ElemType v)
{
	for(int i=0;i<G.vernum;i++)
	{
		if(G.vexs[i]==v)
		return i;
	}
}
void  CreateUDG(AMGraph  &G)
{   int i,j,k;
    ElemType v1,v2;
    cout<<"請依次輸入圖的頂點數和邊數!\n";
    cin>>G.vernum >>G.arcnum;
    for (i=0;i<G.vernum;i++){
	    cout<<"請輸入頂點值;\n";
        cin>>G.vexs[i];
		}  
    for (i=0;i< G.vernum;i++)
        for (j=0;j<G.vernum;j++)
            G.arcs[i][j]=0;    
    for (k=1;k<=G.arcnum;k++)
      {   cout<<"請輸入一條邊;\n";
	      cin>>v1>>v2; 
          i=LocateVex(G,v1);j=LocateVex(G,v2);
          G.arcs[i][j]=G.arcs[j][i]=1;
      }
}
bool  visited[MaxVerNum];   
int e=0;
void  DFS(AMGraph G,int v)  
  {  int w;
     cout<<G.vexs[v];    visited[v]=true;  
      for ( w=0; w<G.vernum; w++ ) { 
           
           
		    if(G.arcs[v][w]==1)
              e++;
            if(G.arcs[v][w]==1&&!visited[w])
			  DFS(G,w);
		   
		
  }
}
void DFSTraverse(AMGraph G)
   {   int v=0;
       for (v=0;v<G.vernum;v++) 
            visited[v]=false;
       for (v=0;v<G.vernum;v++) 
            if (!visited[v])   {   DFS(G,v); }
   }
int  DFSTraverse1(AMGraph G)
   {   int k=0,v;
       for (v=0;v<G.vernum;v++) 
            visited[v]=false;
       for (v=0;v<G.vernum;v++) 
            if (!visited[v])   { k++;   DFS(G,v); }
        e=e/2;
        return  k;
   }


int main()
{
	AMGraph G;
	int m;
	CreateUDG(G);
	cout<<"該圖按深度優先序列輸出為;";
	m=DFSTraverse1(G);
	cout<<"\n該圖的連通分量數為;"<<m;
	cout<<"\n該圖的邊數為;"<<e;
}

相關推薦

資料結構鄰接矩陣儲存結構連通分量個數設計演算法G深度深度優先序列輸出

#include <iostream> #define MaxVerNum 100 typedef char ElemType; using namespace std; typedef struct { ElemType vexs[MaxV

資料結構作業五鄰接儲存結構廣度遍歷優先搜尋序列

#include <iostream> #define MVNum 100 #define MAXQSIZE 100 using namespace std; typedef char ElemType; typedef int QElemType; typed

資料結構作業三利用棧(順序棧儲存結構)實現二、十和十六進位制轉換

#include <iostream> #define MAXSIZE 100 using namespace std; typedef int SElemType; typedef struct { SElemType *base; SElemType

資料結構--C語言--已知線性表中的元素以值遞增有序排列單鏈表儲存結構。試寫一高效演算法刪除表中所有值大於mink且小於maxk的元素

#include<stdio.h> #include<stdlib.h> #define OK 1 #define ERROR 0 #define LEN sizeof(struct LNode) struct LNode{ int data;//資料域 struct

資料結構——的遍歷(鄰接矩陣為例)

  #include<stdio.h> #define N 20 #define TRUE 1 #define FALSE 0 int visited[N]; typedef struct /*佇列的定義*/ { int data[N]; i

資料結構鄰接表的儲存結構 建立鄰接演算法

【資料結構】鄰接矩陣及其實現 一個圖的鄰接矩陣的表示是唯一的,但其鄰接表表示不唯一,這是因為在鄰接表結構中,各便表結點的連結次序取決於建立鄰接表時的演算法以及輸入的次序。 一般而言鄰接矩陣適合儲存稠密圖,鄰接表適合儲存稀疏圖。 直接輸入:  #include <s

Java 大話資料結構(1) 線性表之順序儲存結構

 本文根據《大話資料結構》一書,實現了Java版的順序儲存結構。 順序儲存結構指的是用一段地址連續的儲存單元一次儲存線性表的資料元素,一般用一維陣列來實現。 書中的線性表抽象資料型別定義如下(第45頁): 實現程式:

Java程式設計樹狀結構輸出目錄

以樹狀結構輸出計算機某個指定資料夾下的所有的檔案和子資料夾名稱。 提示:使用File的方法,並結合遞迴實現 程式碼如下: import java.io.File; /** * 以樹狀結構輸出計算機

資料整理c++ 定義矩陣類CMatrix過載二維陣列運算子[][]方法

資料時間:2009-12-02之前 分享時間:2009-12-02到百度空間,空間關閉,重新整理 內容:實現一個二維(多維同理)陣列類,對下標做安全處理,避免內在越界,行列分別保留一個冗餘位置以確保任何時候可以返回合法地址 原始碼因為最早分享的論壇關閉找不到了,重新實現一

資料結構線性表的順序儲存

這段時間準備將書上的資料結構全部自己實踐一遍。 線性表是有序和有限的,分順序儲存和鏈式儲存。 本篇記錄c語言實現順序儲存程式碼。 線性表歸檔 # include <stdlib.h> # include <stdio.h> # defi

資料分析:python:Pandas基礎:結構資料處理

python:Pandas基礎:結構化資料處理 目錄: 一 pandas及其重要性 pandas是資料分析工作的首選庫。它含有使資料分析工作變得更快更簡單的高階資料結構和操作工具。 pandas是基

資料結構線性表的順序儲存完整程式

資料結構,線性表的順序儲存完整程式 #include<stdio.h> #include<malloc.h> #include<stdlib.h> #include<iostream.h> #define L

Unity Shader--- 準確認識SubShader語義塊結構、渲染狀態設定、Tags標簽

strong blend 渲染引擎 引擎 語法 always 加載 setup 使用 一【SubShader】   每個UnityShader文件可以包含多個SubShader語義塊,但至少要有一個。當Unity需要加載這個UnityShader時,Unity會掃描所有的S

Unity筆記Terrain地形制坍塌/深坑

unity flatten err target eight tar log 高度 .com Unity的Terrain組件在【set the terrain height】分頁下,height高度為0時,可理解為該地形的海平面高度,此時就不能地形下榻。把height調到1

鄰接矩陣存儲結構

data error 對角線 一個 () num out == using 如上圖。我們能夠把v0標記為0。v1標記為1。。。。 並把聯通的2點權值全設置為1,那麽能夠用鄰接矩陣(右圖)來表示 概念解析: 第一個鄰接頂點: 我們以vo為

遊戲作品Sunset Game 制組出品遊戲一覽

論壇 新浪 數值 麻煩 完成 body 嘗試 音效 記憶 【其實是黑歷史一覽——】 原先,在早期,我們本打算建立一個網站做宣傳的,網站大概是這樣的 但是後來才知道,網站還需要買域名和租服務器啊~~ 而且顯而易見,網頁只是新手水平,美術更是用的網絡圖片,再加上當時正在

資料收集PCA降維

post hive ron str AD span clas htm logs 重點整理: PCA(Principal Components Analysis)即主成分分析,是圖像處理中經常用到的降維方法 1、原始數據: 假定數據是二維的 x=[2.5, 0.5, 2.2,

單純的想知道即可應用小程序制怎麽樣?

感覺 代碼 現在 比較 不錯 但是 體感 href tps 單純的想知道【即可應用】小程序制作怎麽樣?這個網站上的:https://jike11.cn 之前看來他們家網站,整體感覺還是不錯的,頁面設計的也比較人性化,但是小程序的制作是一個比較麻煩的事,我不會寫代碼,不知道可

區塊鏈太坊(Ethereum )高級進階實戰視頻教程

price 實用方法 def 實戰 draw data java代碼 pri per 【區塊鏈】以太坊(Ethereum )高級進階實戰視頻教程視頻教程地址:http://edu.51cto.com/course/14785.html 課程大綱: 課程概要介紹使用bootn

資料搬遷LINUX 下安裝JDK

root用戶登錄 腳本語句 下載jdk 查詢 上傳 use 方法 path環境變量 自己 今天閑著沒事,就在linux下安裝一些應用軟件,學著裝那個JDK,和配置它的環境變量。雖然網上有很多的方法,自己做下也好,順帶記錄下,以便今後好查詢: 1,下載JDK 到sun的主頁