资源简介
数据结构图的遍历
代码片段和文件信息
#include “LGraph.h“
Status CreateGraph(AMLGraph &G)//利用邻接多重表创建图
{
FILE *fp*fq;
int i;
int x1y1;//用来储存输入的两个顶点的位置
PEBox p;
if((fp=fopen(“Edge.txt““r“))==NULL)//打开文件
{
printf(“Open Failed!“);
}
if((fq=fopen(“City.txt““r“))==NULL)//打开文件
{
printf(“Open Failed!“);
}
G.g=(VexBox*)malloc(MAX_VERTEX_NUM*sizeof(VexBox));//为邻接多重表的头结点申请空间
if(!G.g)
return 0;
G.vexnum=25;//结点个数
G.edgenum=30;//边数
for(i=0;i {
fscanf(fq“%s“&G.g[i].city);
G.g[i].data=i+1;
G.g[i].firstedge=NULL;
}
for(i=0;i {
p=(PEBox)malloc(sizeof(EBox));//新申请一个表结点来储存边的信息
if(!p) return 0;
p->ilink=NULL;
p->jlink=NULL;
fscanf(fp“%d“&x1);
fscanf(fp“%d“&y1);
x1--;
y1--;
p->ivex=x1;
p->jvex=y1;
p->ilink=G.g[x1].firstedge;//将表结点插入到邻接多重表中
G.g[x1].firstedge=p;
p->jlink=G.g[y1].firstedge;
G.g[y1].firstedge=p;
}
return OK;
}
//深度遍历并给出序列
Status DFSTraverse(AMLGraph &Gint yint visited[])
{
PEBox w;
printf(“%s “G.g[y].city);
visited[y]=1;//标记为已遍历
w=G.g[y].firstedge;//指向该位置下的第一个表结点
while(w){
if(w->ivex==y){//查找相应数据的位置
if(visited[w->jvex]==0){//判断是否遍历过
DFSTraverse(Gw->jvexvisited);//未被遍历过则深度优先遍历该结点
}
w=w->ilink;//指针后移
}
else{
if(visited[w->ivex]==0){//判断是否遍历过
DFSTraverse(Gw->ivexvisited);//未被遍历过则深度优先遍历该结点
}
w=w->jlink;//指针后移
}
}
return OK;
}
//查询a在邻接多重表中的位置
Status Locate(AMLGraph Gchar a[])
{
int i;
for(i=0;i if(strcmp(G.g[i].citya)==0)
return i;
}
return ERROR;
}
//广度遍历并给出序列
void BFSTraverse(AMLGraph G)
{
linkQueue Q;
int ab;
int visi[MAX_VERTEX_NUM];//标志数组
char y[20];
for(a=0;a visi[a]=0;
InitQueue(Q);//创建队列
printf(“please input the starting point:“);
scanf(“%s“&y);
a=Locate(Gy);//查找y在邻接多重表的位置
visi[a]=1;//标记为已遍历
EnQueue(Qa);//进队列
while(Q.front!=Q.rear)//队不为空则进行循环
{
DeQueue(Qa);//队头出队列
Print(GG.g[a].city);
for(b=FirstAdjVex(GG.g[a].city);b>=0;b=NextAdjVex(GG.g[a].cityG.g[b].city))
{
if(visi[b]==0)
{
visi[b]=1;
EnQueue(Qb);
}
}
}
}
//深度遍历并给出生成树
Status DFSTree(AMLGraph &Gint yint visited[]int p)
{
PEBox w;
printf(“<%s%s>\t“G.g[p].cityG.g[y].city);
visited[y]=1;//标记为已遍历
w=G.g[y].firstedge;//指向该位置下的第一个表结点
while(w)
{
if(w->ivex==y)//查找相应数据在表结点中的位置
{
if(visited[w->jvex]==0)//判断是否遍历过
{
DFSTree(Gw->jvexvisitedy);//对该结点深度优先遍历
}
w=w->ilink;//指针后移
}
else
{
if(visited[w->ivex]==0)//判断是否遍历过
{
DFSTree(Gw->ivexvisitedy);//对该结点深度优先遍历
}
w=w->jlink;//指针后移
}
}
return OK;
}
//广度优先生成树
Status BFSTree(AMLGraph &G int s[])
{
linkQueue Q;
int a;
char y[30];
EBox *p;
InitQueue(Q);
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2019-09-10 12:15 LGraph\
文件 158 2015-02-19 10:39 LGraph\City.txt
文件 184 2018-01-13 11:12 LGraph\Edge.txt
文件 1229 2018-01-12 11:46 LGraph\LGraph.cbp
文件 5440 2018-01-17 17:46 LGraph\LGraph.cpp
文件 356 2019-01-14 16:44 LGraph\LGraph.depend
文件 1219 2018-01-18 10:19 LGraph\LGraph.h
文件 505 2019-01-17 10:48 LGraph\LGraph.layout
文件 544 2018-01-12 11:40 LGraph\Queue.cpp
文件 517 2018-01-12 11:40 LGraph\Queue.h
目录 0 2019-09-10 12:15 LGraph\bin\
目录 0 2019-09-10 12:15 LGraph\bin\Debug\
文件 978310 2019-01-14 16:44 LGraph\bin\Debug\LGraph.exe
文件 2555 2018-01-17 16:57 LGraph\main.cpp
目录 0 2019-09-10 12:15 LGraph\obj\
目录 0 2019-09-10 12:15 LGraph\obj\Debug\
文件 10158 2019-01-14 16:44 LGraph\obj\Debug\LGraph.o
文件 3214 2019-01-14 16:44 LGraph\obj\Debug\Queue.o
文件 13379 2019-01-14 16:44 LGraph\obj\Debug\main.o
- 上一篇:数据结构实验源代码集
- 下一篇:CrySearch内存搜索器源码
相关资源
- 数据结构实验源代码集
- 高性能服务器代码(50_06th_server_thre
- olsr协议代码
- TCP/IP客户端和服务器端源代码,好用
- 代码雨.cpp
- 基于opencv的模板匹配代码
- 交互式计算机图形学 第六版 OpenGL源代
- 数据结构教程李春葆第五版书中例题
- 三次样条插值类源代码!
- 高精度加法(c++代码)
- diy写字机grbl v1.1源代码
- ftp工具代码
- C语言常用代码(分章节)
- C语言常用算法源代码
- 吕鑫:VS2015之博大精深的0基础C语言视
- c++ 刷屏软件代码
- 关于LED制作的源代码合集(38套)
- OBD_CAN读取代码(stm32f103)
-
STM32-ba
se64加密源代码 - 谭浩强第五版课件及代码
- 俄罗斯方块(c++控制台代码)
- C++贪吃蛇控制台小游戏代码
- 五子棋c++控制台代码
- 吃豆人.cpp 代码
- 51超声波避障源代码
- 无人机飞控+ps2遥控代码
- QT 计算文件夹内所有代码行数
- 推箱子 c语言代码
- C++学习指南语法篇代码+pdf(pdf可直接
- 一个C++实现的源代码行数统计工具
评论
共有 条评论