Búsqueda primero en amplitud
#include
#include
#include
int visitado[20]={0};
typedef struct
{
char vexs[20];/*tabla de vértices*/
int bordes[20][20];
int n,e;
}Mgraph;
typedef estructura QNode
{
int datos;
struct QNode *next;
int Queusize;
}
QNode, *QueuePtr;//Definir el tipo de nodo de cola
typedef struct
{
QueuePtr front;
QueuePtr rear;
}
LinkQueue;//Tipo de cola
void InitQueue(LinkQueue *Q)//Crear cola
{
Q->front=Q->trasero=(QueuePtr)malloc(sizeof(QNode));
Q->front->next=NULL;
} p >
void EnQueue(LinkQueue *Q,int e)//Insertar elementos en la cola
{
QueuePtr p;
p=(QueuePtr )malloc(sizeof(QNode));
p->data=e;
p->next=NULL;
Q->trasero-> next=p;
Q->rear=p;
}
int DeQueue(LinkQueue *Q)//Quitar de la cola el elemento y devolver la Posición del elemento
{
int e;
QueuePtr p;
p=Q->front->siguiente;
e=p->datos;
Q->frontal->siguiente=p->siguiente;
if(Q->trasero==p)
Q->trasero=Q->delantero;
gratis(p);
retorno (e);
}
int QueueEmpty(LinkQueue *Q)//Determinar si la cola está vacía
{
if(Q->front==Q->rear )
devuelve 1;
else
devuelve 0;
}
void CreateMGraph(Mgraph *G)
{
int i,j,k;
printf("Ingrese el número de vértices y aristas\n");
scanf("%d %d", &G->n,&G->e);
getchar();
printf("Ingrese %d vértices\n", G ->n);
for(i=0;i
G->vexs[i]=getchar();
para (i = 0;i
para (j = 0;j
G- > bordes[i][j]=0;
printf("Ingrese %d elementos en la matriz:\n",2*(G->e));
para (k = 0;k<2*(G->e);k++)
{
scanf("%d%d",&i,&j);
G->bordes[i][j]=1;
}
}
void BFS(Mgraph G,int i )/ /Recorrido primero en amplitud
{
int u,j;
LinkQueue Q;
InitQueue(&Q); p >
printf("%c",G.vexs[i]);
visitó[i]=1;//marca
EnQueue(&Q,i) ;
while(!QueueEmpty(&Q))
{
i=DeQueue(&Q);
for(j=0 ; j if(G.edges[i][j]==1&&!visited[j]) { printf("%c",G . vexs[j]); visitó[j]=1; EnQueue(&Q,j); } } } void main() { Mgraph G; CreateMGraph(&G); /p> printf("Anchura:\n"); BFS(G,0); }