您好,欢迎来到微智科技网。
搜索
您的当前位置:首页图的遍历的实现。

图的遍历的实现。

来源:微智科技网


#include \"stdio.h\" #include #define INFINITY 32767

#define MAX_V 20 #define QUEUE_SIZE (MAX_V+1) using namespace std;

bool *visited; typedef struct

{ char *vexs; int arcs[MAX_V][MAX_V]; int vexnum,arcnum; }Graph;

class Queue { public: void InitQueue()

{ base=(int *)malloc(QUEUE_SIZE*sizeof(int)); front=rear=0; } void EnQueue(int e)

{ base[rear]=e; rear=(rear+1)%QUEUE_SIZE; } void DeQueue(int &e)

{ e=base[front]; front=(front+1)%QUEUE_SIZE; } public:

int *base; int front; int rear; };

int Locate(Graph G,char c) { for(int i=0;iif(G.vexs[i]==c) return i; return -1; }

void CreateUDN(Graph &G) { int i,j,w,s1,s2; char a,b,temp; printf(\"输入顶点的总数和边的总数:\"); scanf(\"%d%d\",&G.vexnum,&G.arcnum);

temp=getchar(); G.vexs=(char *)malloc(G.vexnum*sizeof(char)); printf(\"输入%d个顶点分别为:\\n\",G.vexnum);

for(i=0;i{ printf(\"顶点%d:\",i); scanf(\"%c\",&G.vexs[i]); temp=getchar();} for(i=0;iprintf(\"输入%d条边分别为:\\n\",G.arcnum);

for(i=0;iscanf(\"%c-%c %d\",&a,&b,&w);

temp=getchar(); s1=Locate(G,a); s2=Locate(G,b);

G.arcs[s1][s2]=G.arcs[s2][s1]=w; } }

int FirstVex(Graph G,int k) { if(k>=0 && k{ for(int i=0;iif(G.arcs[k][i]!=INFINITY) return i; } return -1; }

int NextVex(Graph G,int i,int j)

{ if(i>=0 && i=0 && jif(G.arcs[i][k]!=INFINITY) return k; } return -1; }

void DFS(Graph G,int k) { int i; if(k==-1) { for(i=0;i{ visited[k]=true; printf(\"%c \",G.vexs[k]); for(i=FirstVex(G,k);i>=0;i=NextVex(G,k,i)) if(!visited[i]) DFS(G,i); } }

void BFS(Graph G) { int k;

Queue Q; Q.InitQueue();

for(int i=0;iif(!visited[i]) { visited[i]=true; printf(\"%c \",G.vexs[i]);

Q.EnQueue(i); while(Q.front!=Q.rear)

{ Q.DeQueue(k); for(int w=FirstVex(G,k);w>=0;w=NextVex(G,k,w)) if(!visited[w]) { visited[w]=true; printf(\"%c \",G.vexs[w]); Q.EnQueue(w); } } } }

void main() { int i; Graph G; CreateUDN(G);

visited=(bool *)malloc(G.vexnum*sizeof(bool)); printf(\"\\n深度优先搜索结果为: \");

for(i=0;ifor(i=0;i

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- 7swz.com 版权所有 赣ICP备2024042798号-8

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务