📄 emp7_07.cpp
字号:
#include"graph2.h"
datagraph g1;
int v,i;
boolean visited[30];
struct queue
{ int data[31];
int front,rear;
};
void SetQueueNull(queue& q)
{ q.front=0;
q.rear=0;
}
boolean QueueEmpty(queue& q)
{boolean QueueEmpty=q.front==q.rear;
return QueueEmpty;
}
void EnQueue(queue& q,int x)
{ if ( (q.rear+1)%30==q.front)
Error("Queue Overflow ");
else
{
q.rear=(1+q.rear)%30;
q.data[q.rear]=x;
}
}
int OutQueue(queue& q)
{ int Outqueue;
if (QueueEmpty(q) )
Error("No data in queue");
else
{ q.front=q.front+1;
Outqueue=q.data[q.front];
}
return Outqueue;
}
void bfsfrom(datagraph& g,int v)
{int u,w,n;
char ch;
queue Q;
SetQueueNull(Q);
n=1;
dispint_atgnode_angle(n,g1,v,270);
visite_gnode(g,v,1);
visited[v]=true;
EnQueue(Q,v);
while (!QueueEmpty(Q) )
{
u=OutQueue(Q);
w=firstadj(g,u);
while (w!=0)
{
if(!visited[w])
{ n=n+1;
dispint_atgnode_angle(n,g1,w,270);
copy_edge(g,u,w,g1);
display_edge(g1,u,w);
visite_gnode(g,w,1);
visited[w]=true;
EnQueue(Q,w);
}
w=nextadj(g,u,w) ;
}
}
return;
}
main()
{
load_graph_file(g,"graphs\\bfs.grp");
for( i=1;i<=nodes(g);i++)
visited[i]=false;
display_graph("原 图",g);
window(1,1,80,4);
copy_all_vertex(g,g1,300,0);
disp_graph("广度遍历生成树",g1);
bfsfrom(g,1);
getch();
exit(1);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -