邻接矩阵、邻接表表示图时的深度优先序列、广度优先序列已知一个图的顶点集V各边集G如下:V = {0,1,2,3,4,5,6,7,8,9};E = {(0,1),(0,4),(1,2),(1,7),(2,8),(3,4),(3 ,8),(5,6),(5,8),

来源:学生作业帮助网 编辑:作业帮 时间:2024/11/16 18:48:54

邻接矩阵、邻接表表示图时的深度优先序列、广度优先序列已知一个图的顶点集V各边集G如下:V = {0,1,2,3,4,5,6,7,8,9};E = {(0,1),(0,4),(1,2),(1,7),(2,8),(3,4),(3 ,8),(5,6),(5,8),
邻接矩阵、邻接表表示图时的深度优先序列、广度优先序列
已知一个图的顶点集V各边集G如下:
V = {0,1,2,3,4,5,6,7,8,9};
E = {(0,1),(0,4),(1,2),(1,7),(2,8),(3,4),(3 ,8),(5,6),(5,8),(5,9),(6,7),(7,8),(8,9)}
当它用邻接矩阵表示和邻接表表示时,分别写出从顶点V0出发按深度优先搜索遍历得到的顶点序列和按广度优先搜索遍历等到的顶点序列.
假定每个顶点邻接表中的结点是按顶点序号从大到小的次序链接的.
图 深度优先序列 广度优先序列
邻接矩阵表示时
邻接表表示时

邻接矩阵、邻接表表示图时的深度优先序列、广度优先序列已知一个图的顶点集V各边集G如下:V = {0,1,2,3,4,5,6,7,8,9};E = {(0,1),(0,4),(1,2),(1,7),(2,8),(3,4),(3 ,8),(5,6),(5,8),
#include
#include
#include
#include
#define maxsize 64
#define TRUE 1
#define FALSE 0
#define n 10
#define e 13
typedef char datatype ;
typedef char vextype;
typedef int adjtype;
typedef struct
{
vextype vexs[maxsize];
adjtype arcs[maxsize][maxsize];
}graph;
typedef struct
{
datatype data[maxsize];
int front,rear;
}sequeue;
typedef struct node
{
int adjvex;
struct node *next;
}edgenode;
typedef struct
{
vextype vertex;
edgenode *link;
}vexnode;
vexnode gl[maxsize];
graph *ga;
sequeue *Q;
graph *CREATGRAPH()
{
int i,j,k;
char ch;
system("cls");
scanf("%c",&ch);
printf("\n请输入顶点信息(邻接矩阵):");
for(i=1;ivexs[i]);
for(i=1;iarcs[j][i]=1;
}
return ga;
}
void PRINT()
{
int i,j;
system("cls");
printf("\n对应的邻接矩阵是:\n\n");
for(i=1;iadjvex=i;
s->next=gl[j].link;
gl[j].link=s;
}
}
void PRINTL()
{
int i;
edgenode *s;
system("cls");
printf("\n对应的邻接表是:\n");
for(i=1;iadjvex);
s=s->next;
}
printf("\n");
}
}
sequeue *SETNULL(sequeue *P)
{
P->front=maxsize-1;
P->rear=maxsize-1;
return P;
}
int EMPTY(sequeue *Q)
{
if(Q->rear==Q->front)
return TRUE;
else
return FALSE;
}
sequeue *ENQUEUE(sequeue *Q,int k)
{
if(Q->front==(Q->rear+1)%maxsize)
{
printf("队列已满!\n");
return NULL;
}
else
{
Q->rear=(Q->rear+1)%maxsize;
Q->data[Q->rear]=k;
}
return Q;
}
int DEQUEUE(sequeue *Q)
{
if(EMPTY(Q))
{
printf("队列为空,无法出队!\n");
return FALSE;
}
else
{
Q->front=(Q->front+1)%maxsize;
return Q->data[Q->front];
}
return 1;
}
void BFS(int k)
{
int i,j;
int visited[maxsize]={0};
printf("\n广度优先遍历后得到的序列是:");
Q=SETNULL(Q);
printf("%3c",ga->vexs[k]);
visited[k]=TRUE;
Q=ENQUEUE(Q,k);
while(!EMPTY(Q))
{
i=DEQUEUE(Q);
for(j=1;jarcs[i][j]==1)&&(!visited[j]))
{
printf("%3c",ga->vexs[j]);
visited[j]=TRUE;
Q=ENQUEUE(Q,j);
}
}
printf("\n\n深度优先遍历后得到的序列是:");
}
void BFSL(int k)
{
int i;
int visited[maxsize]={0};
edgenode *p;
Q=SETNULL(Q);
printf("\n广度优先遍历后得到的序列是:");
printf("%3c",gl[k].vertex);
visited[k]=TRUE;
Q=ENQUEUE(Q,k);
while(!EMPTY(Q))
{
i=DEQUEUE(Q);
p=gl[i].link;
while(p!=NULL)
{
if(!visited[p->adjvex])
{
printf("%3c",gl[p->adjvex].vertex);
visited[p->adjvex]=TRUE;
Q=ENQUEUE(Q,p->adjvex);
}
p=p->next;
}
}
printf("\n\n深度优先遍历后得到的序列是:");
}
void DFS(int i)
{
int j;
static int visited[maxsize]={0};
printf("%3c",ga->vexs[i]);
visited[i]=TRUE;
for(j=1;jarcs[i][j]==1)&&(!visited[j]))
DFS (j);
}
void DFSL(int k)
{
int j;
edgenode *p;
static int visited[maxsize]={0};
printf("%3c",gl[k].vertex);
visited[k]=TRUE;
p=gl[k].link;
while(p)
{
j=p->adjvex;
if(!visited[j])
DFSL(j);
p=p->next;
}
}
void main()
{
int i,k;
int ch;
Q=malloc(sizeof(graph));
ga=malloc(sizeof(graph));
while(1)
{
printf("\n\n\n");
printf("输入你的选择:");
scanf("%d",&ch);
switch(ch)
{
case 1:CREATADJLIST();
PRINTL();
printf("想从第几号结点开始:");
scanf("%d",&k);
BFSL(k);
DFSL(k);break;
case 2:ga=CREATGRAPH();
PRINT();
printf("想从第几号结点开始:");
scanf("%d",&i);
BFS(i);
DFS(i);break;
case 3:exit (0);
}
}
}

邻接矩阵、邻接表表示图时的深度优先序列、广度优先序列已知一个图的顶点集V各边集G如下:V = {0,1,2,3,4,5,6,7,8,9};E = {(0,1),(0,4),(1,2),(1,7),(2,8),(3,4),(3 ,8),(5,6),(5,8), 数据结构:设有下列带权无向图:(1)请写出该图的邻接矩阵.(2)请画出该图的邻接表.(3)列出深度优先遍历该图所得到的一个顶点序列.(4)列出广度优先遍历该图所得到的一个顶点序 求一个源代码要求显示图的邻接矩阵图的邻接表,深度广度优先遍历最小生成树PRIM算法KRUSCAL算法图的连通分1.显示图的邻接矩阵,图的邻接表,深度优先遍历,广度优先遍历,最小生成树PRIM算法, 在线急求熟悉图的两种常用的存储结构,邻接矩阵和邻接表.1.熟悉图的两种常用的存储结构,邻接矩阵和邻接表.2.建立有向图,用邻接表存储结构存储.3.在邻接表存储结构上实现深度优先遍历 具体实现要求:1.通过键盘输入图的顶点和边信息,分别构造一个无向图的邻接矩阵和一个有向图的邻接表.2.分别对建立好的两个图进行深度和广度优先遍历,输出相应的遍历序列.3.统计两个图 已知一个无向图G=(V,E),其中V={V1,V2,V3,V4},其邻接矩阵如下0 1 1 11 0 1 11 1 0 01 1 0 0请还原G图,并画出G的邻接表根据邻接表,求从V1开始的深度遍历序列和广度遍历序列及其对应的生成树 画出图的邻接矩阵和邻接表 《数据结构》以邻接表位存储,写出连通图的深度优先搜索法. (求解C程序高手)用正向表存储图的数据,并实现图的深度优先搜索和广度优先搜索.正向表是对邻接矩阵的行进行压缩的结果,它的特点是将每个顶点的邻接顶点集中在一起存放.有向图的正 1.用邻接表表示图 广度优先搜索 通常采用什么实现算法 a 栈 b 队列 c 树 d图2.用邻接表表示图 深度优先搜索 通常采用什么实现算法a 栈 b 队列 c 树 d图 以邻接矩阵作存储结构 设计按深度优先遍厉图的非递归算法 关于数据结构中图的问题对于一个无向图,假定采用邻接矩阵表示,试分别写出从顶点0出发按深度优先搜索遍历得到的顶点序列…题目之中的采用邻接矩阵表示,跟不采用邻接矩阵得到的答案有 基于邻接矩阵和邻接表(任选)的图的深度广度遍历方法、最小生成树、最短路径、拓扑排序、关键路径算 实现这个算法是用邻接矩阵简单还是用邻接表来做简单 图的深度优先遍历序列什么唯一? 用邻接表表示的图进行广度优先遍历时,通常是采用()来实现算法的.A 栈 B队列 C图 D树 请画出下图的邻接矩阵和邻接表. 数据结构-图的邻接表表示(C语言) 求多重邻接表的迪杰斯特拉算法无向图的多重邻接表不是邻接矩阵!