写出对给定的无定向图从V1结点开始广度优先搜索历序列和广度优先生成树.

来源:学生作业帮助网 编辑:六六作业网 时间:2024/12/23 22:24:50
写出对给定的无定向图从V1结点开始广度优先搜索历序列和广度优先生成树.写出对给定的无定向图从V1结点开始广度优先搜索历序列和广度优先生成树.写出对给定的无定向图从V1结点开始广度优先搜索历序列和广度优

写出对给定的无定向图从V1结点开始广度优先搜索历序列和广度优先生成树.
写出对给定的无定向图从V1结点开始广度优先搜索历序列和广度优先生成树.

写出对给定的无定向图从V1结点开始广度优先搜索历序列和广度优先生成树.
#include
#define QueueSize 100
typedef int DataType;
typedef struct{
int front;
int rear;
int count;
DataType data[QueueSize];
}CirQueue;
void InitQueue(CirQueue *Q){
Q->front=Q->rear=0;
Q->count=0;
}
int QueueEmpty(CirQueue *Q){
return Q->count==0;
}
int QueueFull(CirQueue *Q){
return Q->count==QueueSize;
}
void EnQueue(CirQueue *Q,DataType x){
if(QueueFull(Q)){
printf("Queue overflow!");
exit(1);
}
Q->count++;
Q->data[Q->rear]=x;
Q->rear=(Q->rear+1)%QueueSize;
}
DataType DeQueue(CirQueue *Q){
DataType temp;
if(QueueEmpty(Q)){
printf("Queue underflow!");
exit(1);
}
temp=Q->data[Q->front];
Q->count--;
Q->front=(Q->front+1)%QueueSize;
return temp;
}
DataType QueueFront(CirQueue *Q){
if(QueueEmpty(Q)){
printf("Queue is empty!");
exit(1);
}
return Q->data[Q->front];
}
#include "CirQueue.h"
#define MaxVertexNum 100
typedef char VertexType;
typedef int EdgeType;
typedef enum{FALSE,TRUE} Boolean;
Boolean visited[MaxVertexNum];
typedef struct node{
int adjvex;
struct node *next;
}EdgeNode;
typedef struct vnode{
VertexType vertex;
EdgeNode *firstedge;
}VertexNode;
typedef VertexNode AdjList[MaxVertexNum];
typedef struct{
AdjList adjlist;
int n,e;
}ALGraph;
void CreateALGraph(ALGraph *G){
int i,j,k;
EdgeNode *s;
scanf("%d%d",&G->n,&G->e);
getchar();
printf("Enter the name of the nodes:\n");
for(i=0;in;i++){
G->adjlist[i].vertex=getchar();
G->adjlist[i].firstedge=NULL;
getchar();
}
for(k=0;ke;k++){
printf("Enter the edge of the graph:\n");
scanf("%d%d",&i,&j);
s=(EdgeNode*)malloc(sizeof(EdgeNode));
s->adjvex=j;
s->next=G->adjlist[i].firstedge;
G->adjlist[i].firstedge=s;
s=(EdgeNode*)malloc(sizeof(EdgeNode));
s->adjvex=i;
s->next=G->adjlist[j].firstedge;
G->adjlist[j].firstedge=s;
}
}
void DFS(ALGraph *G,int i){
EdgeNode *p;
printf("visit vertex:%c\n",G->adjlist[i].vertex);
visited[i]=TRUE;
p=G->adjlist[i].firstedge;
while(p){
if(!visited[p->adjvex])
DFS(G,p->adjvex);
p=p->next;
}
}
void DFSTraverse(ALGraph *G){
int i;
for(i=0;in;i++)
visited[i]=FALSE;
for(i=0;in;i++)
if(!visited)
DFS(G,i);
}
void BFS(ALGraph *G,int k){
int i;
CirQueue Q;
EdgeNode *p;
InitQueue(&Q);
printf("visit vertex:%c\n",G->adjlist[k].vertex);
visited[k]=TRUE;
EnQueue(&Q,k);
while(!QueueEmpty(&Q)){
i=DeQueue(&Q);
p=G->adjlist[i].firstedge;
while(p){
if(!visited[p->adjvex]){
printf("visit vertex:%c\n",G->adjlist[p->adjvex].vertex);
visited[p->adjvex]=TRUE;
EnQueue(&Q,p->adjvex);
}
p=p->next;
}
}
}
void main(){
ALGraph G;
CreateALGraph(&G);
BFS(&G,0);
}

写出对给定的无定向图从V1结点开始广度优先搜索历序列和广度优先生成树. 图的遍历:深度优先搜索(邻接矩阵存放)图中结点数不少于20个,每个结点用一个编号表示,通过输入图的全部边输入一个图,以用户给定的点为起始点,对图进行广度优先搜索,输出结点的访问 已知一个无向图G=(V,E),其中V={V1,V2,V3,V4},其邻接矩阵如下0 1 1 11 0 1 11 1 0 01 1 0 0请还原G图,并画出G的邻接表根据邻接表,求从V1开始的深度遍历序列和广度遍历序列及其对应的生成树 数据结构无向图画法,以及无向图的广度优先生成树.1.已知一无向图G的顶点、边定义G={{V1,V2,V3,V4,V5},{< V1,V2>,< V1,V3>,< V1,V3>,< V2,V3>,< V4,V5>}},画出该图.2.画出上一小题无向图的广度优先生成树. 完善程序(free pascal):单源点最短路径:给定带权有向图G=(v,e),源点v1在v中,求 v1到v中其余各结点的最短路径.数据结构说明:cost[I,j]:表示带权有向图的邻接矩阵 d[j]:表示从v1到vj的最短路径长 将一棵有100个结点的完全二叉树从根这一层开始,每一层 上从左到右依次对 结点进行编号,根结点将一棵有100个结点的完全二叉树从根这一层开始,每一层上从左到右依次对 结点进行编号,根结 2、设某个图的邻接表如图2,根据该临界表执行从顶点A出发的广度优先搜索算法,则经历的2、设某个图的邻接表如图2,根据该临界表执行从顶点A出发的广度优先搜索算法,则经历的结点顺序为( 对于任意一个图,从它的某个结点进行一次深度或广度优先遍历可以访问到该图的每个顶点这句话为什么是错的,求详解 C++,判断二叉树中某结点是其双亲结点的左孩子还是右孩子以先序的方式创建一棵二叉树,结点为字符型.给定某结点的值,判断它是其双亲结点的左孩子还是右孩子,如果二叉树无该结点,输出“n 广度优先法统计二叉树值为x的结点个数 无向图结点之间的连通关系,是结点集合上的一个什么关系 将一棵有100个结点的完全二叉树从根这一层开始,每一层上从左到右依次对 结点进行编号,根结点的编号为1,则编号为49的结点的左孩子编号为( ). 将一棵有99个结点的完全二叉树从根这一层开始,每一层从左到右依次对结点进行编号,根结点的编号为1,则编号为49的结点的右孩子编号为 ——.A.98 B.99 C.50 D.不存在(答案D)为什么? 数据结构上的题:将一个顺序表中从第i个结点开始的k个结点删除 已知L 是无表头结点的单链表,且P 是指向表中某个结点的指针,试写出在 P 所指结点之前插入指针 S 所指结点的语句序列. 已知图的邻接表如下所示,根据算法,则从顶点0出发按广度优先遍历的结点序列是A.0 3 2 1 B.0 1 2 3 C.0 1 3 2 D.0 3 1 2 数据结构的这道选择题选哪个?8.下列说法正确的是:()A. 哈希表是解决排序的方法B. 图的结点关系是任意的,在拓扑排序中,弧头结点可能会出现在弧尾结点之前C. 图的广度优先搜索算 文学对人性表现的深度和广度怎么写