图的遍历C程序.doc_第1页
图的遍历C程序.doc_第2页
图的遍历C程序.doc_第3页
图的遍历C程序.doc_第4页
图的遍历C程序.doc_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

#include#include#define Max 10#define FALSE 0#define TRUE 1#define Error printf#define QueueSize 30typedef struct char vexsMax; int edgesMaxMax; int n,e;MGraph;int visitedMax;typedef struct int front; int rear; int count; int dataQueueSize;CirQueue;/初始化队列 void InitQueue(CirQueue *Q) Q-front=Q-rear=0; Q-count=0;/队列空int QueueEmpty(CirQueue *Q) return Q-count=QueueSize; /队列满int QueueFull(CirQueue *Q) return Q-count=QueueSize; /进队void EnQueue(CirQueue *Q,int x) if(QueueFull(Q) Error(Queue overflow); else Q-count+; Q-dataQ-rear=x; Q-rear=(Q-rear+1)%QueueSize; /出队int DeQueue(CirQueue *Q) int temp; if(QueueEmpty(Q) Error(Queue underflow); else temp=Q-dataQ-front; Q-count-; Q-front=(Q-front+1)%QueueSize; return temp; /建立图矩阵void CreateMGraph(MGraph *G) int i,j,k; char ch1,ch2; printf(ntt请输入顶点数,边数并按回车键(格式:3,4):); scanf(%d,%d,&(G-n),&(G-e); for(i=0;in;i+) getchar(); printf(ntt请输入第%d个顶点序号并按回车键,i+1); scanf(%c,&(G-vexsi); for(i=0;in;i+) for(j=0;jn;j+) G-edgesij=0; for(k=0;ke;k+) getchar(); printf(ntt请输入第%d条边的顶点序号并按回车键(格式:i,j):,k+1); scanf(%c,%c,&ch1,&ch2); for(i=0;ch1!=G-vexsi;i+); for(j=0;ch2!=G-vexsj;j+); G-edgesij=1; /深度优先遍历递归 void DFSM(MGraph *G,int i) int j; printf(ntt深度遍历序列:%cn,G-vexsi); visitedi=TRUE; for(j=0;jn;j+) if(G-edgesij=1&!visitedj) DFSM(G,j); /广度优先遍历递归void BFSM(MGraph *G,int k) int i,j; CirQueue Q; InitQueue(&Q); printf(ntt广度优先遍历序列:%cn,G-vexsk); visitedk=TRUE; EnQueue(&Q,k); while(!QueueEmpty(&Q) i=DeQueue(&Q); for(j=0;jn;j+) if(G-edgesij=1 &! visitedj) visitedj=TRUE; EnQueue(&Q,j); /深度优先遍历void DFSTraverseM(MGraph *G) int i; for(i=0;in;i+) visitedi=FALSE; for(i=0;in;i+) if(!visitedi) DFSM(G,i); /广度优先遍历void BFSTraverseM(MGraph *G) int i; for(i=0;in;i+) visitedi=FALSE; for(i=0;in;i+) if(!visitedi) BFSM(G,i); main() MGraph *G,a; char ch1; int i,j,ch2; G=&a; printf(ntt建立一个图矩阵n); CreateMGraph(G); printf(ntt已建立图的矩阵n); for(i=0;in;i+) printf(ntt ); for(j=0;jn;j+) printf(%5d,G-edgesij); getchar(); ch1=y; while(ch1=y|ch1=Y) printf(n); printf(ntt 图子系统 n); printf(ntt*n); printf(ntt* 1-更新矩阵 *n); printf(ntt* 2-深度优先遍历 *n); printf(ntt* 3-广度优先遍历 *n); printf(ntt* 0-退出 *n); printf(ntt*n); printf(ntt请选择菜单号(03):); scanf(%d,&ch2); getchar(); switch(ch2) case 1: CreateMGraph(G); printf(ntt图建立完毕!n); break; case 2: DFSTraverseM(G); break; case 3: BFSTraverseM(G); break; case 0: ch1=n; brea

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论