范文无忧网范文学习范文大全

c语言图的遍历邻接表存储深度广度优先遍历

02月17日 编辑 fanwen51.com

[C语言数组排序]#include<stdio.h> void main() { int a[10] = { 10,2,3,4,5,6,9,8,7,1 }; int i,j,t; for(j=0;j<10;j++) for(i=0;i<10-1-j;i++) if(a[i]>a[i+1]) /* 由小到大,由大到小时改...+阅读

(1) 图的建立,按采用邻接表作为存储结构。(2) 从指定顶点出发进行深度优先搜索遍历。(3) 从指定顶点出发进行广度优先搜索遍历。#include"stdio.h"#include"string.h"#include"stdlib.h"#include"math.h"#define MAX_INT 1000#define MAX_VERTEX_NUM 20#define MAX_QUEUE_NUMBER 20 typedef struct ArcNode { int adjvex; double adj; struct ArcNode *nextarc; }ArcNode; typedef struct VexNode { char szName[40]; ArcNode *firstarc; }VexNode,AdjList[MAX_VERTEX_NUM]; typedef struct { AdjList vexs; int vexnum,arcnum; }Net;//定义队列 typedef struct{ int *elem; int front, rear; }Queue; void InitQueue(Queue &Q) { Q.elem = new int[MAX_QUEUE_NUMBER]; Q.front = Q.rear = 0; } int EmptyQueue(Queue Q) { if(Q.front==Q.rear) return 0; else return 1; } void DestroyQueue(Queue &Q){ delete []Q.elem; Q.front = Q.rear = 0; } void EnterQueue(Queue &Q, int e) { if((Q.rear + 1)%MAX_QUEUE_NUMBER != Q.front) Q.elem[Q.rear ] = e; else printf("队列满!\n"); Q.rear = (Q.rear + 1)%MAX_QUEUE_NUMBER; } void LeaveQueue(Queue &Q, int &e) { if(Q.rear != Q.front) e = Q.elem[Q.front]; else printf("队列空!\n"); Q.front = (Q.front+1)%MAX_QUEUE_NUMBER; } int LocateVex(Net ga,char *name) { int i; for(i=0;inextarc=ga.vexs[i].firstarc; ga.vexs[i].firstarc=p; } } void DFS(Net ga,char *name,int *visited) { int v,w; ArcNode *p; v=LocateVex(ga,name); visited[v]=1; printf("%s ",ga.vexs[v].szName); p=ga.vexs[v].firstarc; while(p!=NULL) { w=p->adjvex; if(visited[w]==0) DFS(ga,ga.vexs[w].szName,visited); p=p->nextarc; } } void DFSTravel(Net ga,char *name) { int v,k=0; int visited[20]; for(v=0;vnextarc; } } } } } void main() { char name[40]; Net ga; crt_net(ga); printf("请输入深度优先遍历开始点的名:"); scanf("%s",name); printf("深度优先遍历:"); DFSTravel(ga,name); printf("\n"); printf("请输入广度优先遍历开始点的名:"); scanf("%s",name); printf("广度优先遍历:"); BFSTravel(ga,name); printf("\n"); }

延伸阅读:

数组排序C语言#include <stdio.h> #include <iostream.h> #include <stdlib.h> #include<time.h> void main() { int a[100],i,c,b,d,e,n; cin>>n; srand((unsigned)time(NULL)); for(i=0...

C语言数组排序方法像是选择法排序,但不太简练! 正确的选择法为: #include <stdio.h> void main(void) { int a[9]={3,42,55,546,43,323,54,121,32},i,j,l,temp; for(i=0;i<9;i++) for(j=i+1;j<8;...

如何加强审计监督全覆盖的深度及广度一是以预算执行审计为主线,实行轮审制,实现对一级预算单位的审计监督全覆盖 。坚持把预算执行审计作为审计的重中之重,形成了预算执行审计“一盘棋”的工作格局,注重从组织方式...

图的遍历的实现数据结构课程设计Queue.h-----------------------------------------#include#includeconst int maxSize=50;class Queue{ public:Queue(){}; ~Queue() {}; virtual bool EnQueue(const int&...

如何在小学数学教学中把握法制渗透的深度和广度小学生的茁壮成长离不开教育,不仅仅是科学文化知识教育,而更重要的是理想、道德和法制教育。因此,学科教学中增强法制教育的渗透,显得尤为重要。如何在数学课堂中渗透法制教育,取...

软件开发需要学会什么技术 VB C语言 C语言还有什么啊首先、你什么都别问,问多了,反而迷茫,不知所措,你现在就开始学习C或C++,相信我!不相信的话,你问过,他们还是让你开始学C,你在学的过程中,你会找到自己的方向,你会知道,你改干什么? 补充一...

没学过C语言可以学C语言数据结构与算法吗你好 一点小建议希望能对你有帮助 (1)学算法 学习算法和具体的语言还是有一定的联系,比如说你的算法最后要用c语言来实现,因为c是面向过程的,所以这和用面向对象的语言如c++来实...

C语言数据结构与算法分析C语言描述Position不是一个类型,起码C语言中,我写那么多年代码没见过这个类型 。你该把整段代码贴上来。我猜你看的那段代码是伪代码,Position是自定义类型。若Position是类名,那么Positi...

简单c语言问题。。。求答 。/*Calendar 2007-01------------------------------------------------------Su Mo Tu We Th Fr Sa------------------------------------------------------ 1 2 3 4 5 6 7...

推荐阅读
图文推荐
栏目列表