精品伊人久久大香线蕉,开心久久婷婷综合中文字幕,杏田冲梨,人妻无码aⅴ不卡中文字幕

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
基于鄰結(jié)表的圖的DFS、BFS遍歷
#include "StdAfx.h"
#include "Graphlist.h"

#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <queue>
//鄰結(jié)表的遍歷
using namespace std;
#define MAXNODE 1000 //圖中頂點(diǎn)的最大數(shù)
typedef int infotype;
typedef char vertype;
struct ArcNode  //邊界點(diǎn)類型
{
int adjvex; //該邊的終點(diǎn)編號(hào)
ArcNode *next; //指向下一條邊的指針
// infotype *info; //該邊的相關(guān)信息
};
struct VerNode//表頭節(jié)點(diǎn)
{
vertype vertex; //頂點(diǎn)信息
ArcNode *firstarc; //指向第一個(gè)鄰接點(diǎn)的指針
};

struct AlGraph//鄰接表
{
VerNode vertices[MAXNODE];//鄰接表
int vexnum,arcnum; //頂點(diǎn)和邊的數(shù)目
};

AlGraph CreateAdjList(AlGraph g)//建立有向圖的鄰接表存儲(chǔ)結(jié)構(gòu)
{
int n;
cin>>n;
for(int i = 1;i <= n; i++)
{
cin>>g.vertices[i].vertex;//輸入頂點(diǎn)信息
g.vertices[i].firstarc=NULL;//初始化每個(gè)鏈表為空
}
int v1, v2;
cin>>v1>>v2; //輸入一條邊依附的兩個(gè)頂點(diǎn)序號(hào)
int e = 0; //圖的邊數(shù)
while(v1 != 0&&v2!=0) //題目要求兩頂點(diǎn)之一為0結(jié)束
{
ArcNode *p = (ArcNode*)malloc(sizeof(ArcNode));
//用頭插法插入節(jié)點(diǎn)以建立鏈表
p->adjvex = v2;
p->next = g.vertices[v1].firstarc;
g.vertices[v1].firstarc=p;
e++;
cin>>v1>>v2;
}
g.vexnum = n;
g.arcnum = e;
return g;
}

int visited[MAXNODE]; //訪問標(biāo)志數(shù)組
void VisitFunc(AlGraph g, int v)//訪問v
{
cout<<g.vertices[v].vertex <<endl;
}
int GraphFirstAdj(AlGraph g , int v)//得到v的第一個(gè)鄰結(jié)點(diǎn)
{
if(g.vertices[v].firstarc!=NULL)
return g.vertices[v].firstarc->adjvex;
else return 0;
}

int GraphNextAdj(AlGraph g,int v, int w)//返回v的下一個(gè)鄰結(jié)點(diǎn),若w是v的最后一個(gè)鄰結(jié)點(diǎn)則返回0
{
ArcNode *p = (ArcNode*)malloc(sizeof(ArcNode));
p = g.vertices[v].firstarc;
while(p)
{
if(p->adjvex == w && p->next != NULL)
return p->next->adjvex;
p = p->next;
}
return 0;
}

void DFS(AlGraph g, int v)//dfs
{
visited[v] = 1; VisitFunc(g,v);//訪問v頂點(diǎn)(輸出v)
for(int w = GraphFirstAdj(g,v); w!= 0; w = GraphNextAdj(g,v,w))
{
if(!visited[w])DFS(g,w);//對(duì)v的尚未訪問的鄰接頂點(diǎn)w遞歸調(diào)用
}
}

void DFSTraverse(AlGraph g) //圖的dfs遍歷
{
for(int i = 1; i <= g.vexnum; i++) visited[i] = 0;//初始訪問數(shù)組置未訪問標(biāo)志
for(int i = 1; i <= g.vexnum; i++)
{
if(!visited[i])DFS(g,i);//對(duì)未訪問的頂點(diǎn)調(diào)用DFS
}
}

void BFSTraverse(AlGraph g)// 圖的bfs遍歷
{
for(int i = 1; i <= g.vexnum;i++) visited[i] = 0;//初始訪問數(shù)組
queue<int> q;
for(int i = 1;i <= g.vexnum;i++)
{
if(!visited[i])
{
q.push(i);
visited[i] = 1;
VisitFunc(g,i);
while(!q.empty())
{
int v = q.front();//對(duì)頭元素出隊(duì)列并置為v
q.pop();
for(int w = GraphFirstAdj(g,v); w!=0; w = GraphNextAdj(g,v,w))//遍歷v的鄰結(jié)點(diǎn)
{
if(!visited[w])
{
q.push(w);//v的尚未訪問的鄰結(jié)頂點(diǎn)w入隊(duì)列Q
visited[w] = 1;
VisitFunc(g,w);
}
}
}
}
}

}

本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
9、深度優(yōu)先算法,圖的遍歷
Translate:USACO/maze1
深度優(yōu)先遍歷和廣度優(yōu)先遍歷
c語言數(shù)據(jù)結(jié)構(gòu)--圖的鄰接矩陣和鄰接表操作的基本操作
圖的基本算法實(shí)現(xiàn)(鄰接矩陣與鄰接表兩種方法)
第18講n
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

主站蜘蛛池模板: 鲁山县| 钟山县| 乳源| 岱山县| 云林县| 永德县| 庆城县| 湖北省| 焦作市| 察雅县| 辽中县| 资兴市| 天水市| 东平县| 内江市| 高清| 霞浦县| 钟祥市| 泸水县| 军事| 通河县| 清流县| 枣阳市| 巫溪县| 余庆县| 拉孜县| 凤山市| 大英县| 德兴市| 上饶市| 焉耆| 多伦县| 宁城县| 西乌珠穆沁旗| 德兴市| 万荣县| 曲阳县| 娱乐| 岳阳市| 靖安县| 新沂市|