📄 guangdubianlitu.cpp
字号:
// guangdubianlitu.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include <stdio.h>
#include <stdlib.h>
#define MAX 20
typedef struct node
{
int vertex;
struct node* next;
}ajnode;
typedef ajnode* link;
ajnode head[6];
int visited[6];
int queue[MAX];
int front=-1;
int rear=-1;
int enqueue(int value)
{
if(rear>=MAX)return -1;
queue[++rear]=value;
}
int dequeue()
{
if(front==rear)return -1;
return queue[++front];
}
void bfs(int current)
{
link p;
enqueue(current);
visited[current]=1;
printf("顶点[%d]",current);
while (front!=rear)
{
current=dequeue();
p=head[current].next;
while (p!=NULL)
{
if(visited[p->vertex]==0)
{
printf("顶点[%d]",p->vertex);
visited[p->vertex]=1;
enqueue(p->vertex);
}
p=p->next;
}
}
}
void creategraph(int *node,int n)
{
link p,newnode;
int from,to;
for (int i=0;i<n;i++)
{
from=node[2*i];
to=node[2*i+1];
newnode=(link)malloc(sizeof(ajnode));
newnode->vertex=to;
newnode->next=NULL;
p=&(head[from]);
while(p->next!=NULL)p=p->next;
p->next=newnode;
}
}
int main(int argc, char* argv[])
{ int node[12][2]={{1,2},{2,1},{1,3},{3,1},{2,3},{3,2},{2,4},{4,2},{3,5},{5,3},{4,5},{5,4}};
link p;
for (int i=1;i<6;i++)
{
head[i].vertex=i;
head[i].next=NULL;
visited[i]=0;
}
creategraph(node[0],12);
for (i=1;i<6;i++)
{
printf("顶点%d",head[i].vertex);
p=head[i].next;
while (p!=NULL)
{
printf("=>%d",p->vertex);
p=p->next;
}
printf("\n");
}
bfs(1);
printf("\n");
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -