ImageVerifierCode 换一换
格式:DOCX , 页数:20 ,大小:136.75KB ,
资源ID:18284558      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/18284558.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(数据结构visualc++用邻接矩阵表示给定无向图并进行深度遍历Word下载.docx)为本站会员(b****4)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

数据结构visualc++用邻接矩阵表示给定无向图并进行深度遍历Word下载.docx

1、 for(k=0;kk+) cout输入第k+1v2; i=LocateVex(G,v1); j=LocateVex(G,v2); G.arcsij=1; G.arcsji=1; /置的对称弧 return 0;G,string u) /确定u在G中序号 int i; for (i=0;i+) if (u=G.vexsi) return i; if (i=G.vexnum) Error u!endl; exit(1);void ShowG(MGraph &G) int i,j;G.vexsi coutG.arcsijmain() MGraph A; int a; a=CreateUDN(A);

2、 ShowG(A);2.分别使用邻接矩阵表示法和邻接表表示法,用深度优先搜索法遍历该图。# include malloc.hconio.hint visited30;# define MAX_VERTEX_NUM 30# define OK 1/typedef int VertexType;typedef int InfoType;typedef struct ArcNode /弧 int adjvex; struct ArcNode *nextarc;ArcNode;typedef struct VNode/表头 int data; ArcNode *firstarc;VNode,AdjLi

3、stMAX_VERTEX_NUM;typedef struct/图 AdjList vertices; int kind;ALGraph;void CreateDG(ALGraph &G) int k,i,v1;endladjvex=v1;nextarc=NULL; G.verticesk.firstarc=p; for(int i=1;i+) int m;m; ArcNode *q; q=(ArcNode *)malloc(sizeof(ArcNode);/动态指针q) exit(-1); q-adjvex=m; /顶点给Pnextarc=q; p=q; /free(q); /free(p)

4、; void DFS (ALGraph G,int v )/深度搜索 visitedv=1;G.verticesv.datanextarc) w=x-adjvex; if(visitedw=0) DFS(G,w);void DFSB (ALGraph G,int v)/深度搜索的边集 ArcNode *y; y=(ArcNode*)malloc(sizeof(ArcNode);y) exit(-1); y=G.verticesv.firstarc; int u=G.verticesv.data; for(;y;y=y- w=y-uwnext=NULL;void EnQueue (LinkQue

5、ue &Q,int e)/进队 QNode *p; p=(QNode*)malloc(sizeof(QNode);data=e; Q.rear-next=p; Q.rear=p;int DeQueue (LinkQueue &Q,int &e)/出队 if(Q.front=Q.rear) return -1; p=Q.front-next; e=p-data;next=p- if(Q.rear=p) Q.rear=Q.front; free(p); return e;int QueueEmpty (LinkQueue Q)/判断队列是否为空 return 1;void BFS(ALGraph

6、G,int v)/广度搜索 int u; LinkQueue Q; InitQueue(Q); if(visitedv=0) EnQueue(Q,v); while(QueueEmpty(Q)!=1) DeQueue(Q,u); ArcNode *z; z=(ArcNode*)malloc(sizeof(ArcNode);z) exit(-1); z=G.verticesu.firstarc; /* for(int w=z-w=0;w=z-nextarc-adjvex) visitedw=1; EnQueue(Q,w); */z;z=z- w=z-void BFSB (ALGraph G,in

7、t v)/广度搜索的边集 ArcNode *r; r=(ArcNode*)malloc(sizeof(ArcNode);r) exit(-1); r=G.verticesu.firstarc;r!=NULL;r=r- w=r-int main() ALGraph G; CreateDG(G); int x;请输入结点数:邻接表为: for(int j=1;=x;j+)G.verticesj.dataadjvexnextarc;请输入第一个要访问的结点序号: int n;n; for( i=0;30; visitedi=0;广度搜索: BFS(G,n);边集: BFSB(G,n);深度搜索: D

8、FS(G,n); DFSB(G,n); /system(pause);3.对学生选课工程图进行拓扑排序.stdio.hstdlib.h#define MAX_VEXTEX_NUM 20#define M 20#define STACK_INIT_SIZE 100#define STACKINCREMENT 10#define OK 1#define ERROR 0typedef int ElemType;typedef struct ArcNodeint adjvex;struct ArcNode *nextarc;typedef struct VNodeint data;ArcNode *f

9、irstarc;VNode,AdjListMAX_VEXTEX_NUM;AdjList vertices;int vexnum, arcnum;typedef struct /构件栈ElemType *base;ElemType *top;int stacksize;SqStack;void InitStack(SqStack *); /函数声明int Pop(SqStack *, ElemType *);void Push(SqStack *,ElemType );int StackEmpty(SqStack *);void CreatGraph(ALGraph *);void FindIn

10、Degree(ALGraph , int * );void TopologicalSort(ALGraph );void InitStack(SqStack *S)/初始化栈S-base=(ElemType *)malloc(STACK_INIT_SIZE*sizeof(ElemType);if(!base)printf(memory allocation failed, goodbyeexit(1);top=S-base;stacksize=STACK_INIT_SIZE;int Pop(SqStack *S,ElemType *e)/出栈操作if(S-top=S-return ERROR;

11、*e=*-S-top;/printf(%dn,e);/ return e;return 0;void Push(SqStack *S,ElemType e)/进栈操作if(S-top-S-base=S-stacksize)base = (ElemType *)realloc(S-base,(S-stacksize+STACKINCREMENT)*sizeof(ElemType);top = S-base+S-stacksize;stacksize+=STACKINCREMENT;*S-top+=e;int StackEmpty(SqStack *S)/判断栈是否为空return OK;else

12、return ERROR;void CreatGraph(ALGraph *G)/构件图int m, n, i;ArcNode *p;请输入顶点数和边数:scanf(%d%d,&G-vexnum,&arcnum);for (i = 1; i vexnum; i+)G-verticesi.data = i;verticesi.firstarc = NULL;arcnum; i+) /输入存在边的点集合n请输入存在边的两个顶点的序号:n,&m);while (n G-vexnum | m vexnum)printf(输入的顶点序号不正确 请重新输入:p = (ArcNode*)malloc(siz

13、eof(ArcNode);if (p = NULL)memory allocation failed,goodbeyadjvex = m;nextarc = G-verticesn.firstarc;verticesn.firstarc = p;建立的邻接表为:n /输出建立好的邻接表for(i = 1;%d,G-verticesi.data);for(p = G-verticesi.firstarc; p; p = p-%3d,p-adjvex);void FindInDegree(ALGraph G, int indegree)/求入度操作int i;= G.vexnum;indegree

14、i = 0;while (G.verticesi.firstarc)indegreeG.verticesi.firstarc-adjvex+;G.verticesi.firstarc = G.verticesi.firstarc-void TopologicalSort(ALGraph G) /进行拓扑排序int indegreeM;int i, k, n;int count = 0;SqStack S;FindInDegree(G, indegree);InitStack(&S);第%d个点的入度为%d n, i, indegreei);for ( i = 1;if (!indegreei)Push(&S,i);进行拓扑排序输出顺序为: /输出结果while(!StackEmpty(&S)Pop(&S,&n);%4d,G.verticesn.data);count+;for (p = G.verticesn.firstarc; p != NULL;k = p-(-indegreek)S,k);printf(if (count G.vexnum)出现错误n排序成功nint main(void) /主函数ALGraph G;CreatGraph(&G);TopologicalSort(G);system(

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1