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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

数据结构 图操作Word格式文档下载.docx

1、 int adjvex; /该弧所指向的顶点的位置 struct ArcNode *nextarc; /指向下一条弧的指针 int weight; /与弧相关的权值,无权则为0ArcNode;typedef struct VNode /顶点结点的结构 int degree,indegree; /顶点的度,入度 VertexType data; ArcNode *firstarc;VNode,AdjListMAX_VERTEX_NUM;typedef struct AdjList vertices; int vexnum,arcnum; /顶点的实际数,边的实际数ALGraph;int Loca

2、teVex(ALGraph &G,VertexType u) int i; for(i=0;iG.vexnum;+i) if(u=G.verticesi.data) return i; return -1;void CreateDG(ALGraph &G) VertexType v1,v2; int i,j; ArcNode *p; printf(ninput the grahs vexnum and arcnum:); scanf(%d %d,&G.vexnum,&G.arcnum);ninput vertect datas:i+) scanf(%dG.verticesi.data); G.

3、verticesi.firstarc=NULL; for(int k=0;kG.arcnum;k+) printf(ninput %dth arcs firstarc nextarc:n,k+1);v1,&v2); i=LocateVex(G,v1); j=LocateVex(G,v2);/head if(i0 | jadjvex=j;nextarc=G.verticesi.firstarc; G.verticesi.firstarc=p;weight=0;,i,G.verticesi.data); p=G.verticesi.firstarc; while(p)-,p-adjvex); p=

4、p-nextarc;int GraphExit(ALGraph G,int i,int j) p=G.verticesi.firstarc; while(p & p-adjvex!=j) p=p- if(p) return 1; else return 0;void Degree(ALGraph &G,int i) int j; G.verticesi.indegree=0; G.verticesi.degree=0; for(j=0;j=S.stacksize) S.base=(SElemType*)realloc(S.base,(S.stacksize+STACKINCREMENT)*si

5、zeof(SElemType); if(! S.top=S.base+S.stacksize; S.stacksize+=STACKINCREMENT; *S.top+=e; return 1;void Pop(SqStack &S,SElemType & if(S.top=S.base) e=*-S.top;int StackEmpty(SqStack & return 1; return 0;int DestroyStack(SqStack S) S.top=NULL; S.base=NULL; deleteS.base; S.stacksize=0;/*graph&stack*int T

6、opologicalSort(ALGraph G) SqStack S; int i,k,j; InitStack(S); if(G.verticesi.indegree=0) Push(S,i); int count=0; while(!StackEmpty(S) Pop(S,i);%d ,G.verticesi.data); +count; j=LocateVex(G,G.verticesi.data); for(p=G.verticesj.firstarc;p;p=p-nextarc) k=p-adjvex; G.verticesk.indegree-; if(G.verticesk.i

7、ndegree=0) Push(S,k); if(countG.vexnum)nther is a loop in this graph! return 0; else s topologicalsort showed over! return 1; DestroyStack(S);int main() ALGraph G; CreateDG(G); De_Ingree(G); TopologicalSort(G);2.无向图 (1)建立一个无向图的邻接表,并输出该邻接表。 (2)采用邻接表存储实现无向图的深度优先遍历。 (3)采用邻接表存储实现无向图的广度优先遍历。typedef int Q

8、ElemType;#define MAXSIZE 100/*队列操作*typedef struct QElemType *base; int front; int rear;SqQueue;int InitQueue(SqQueue &Q) Q.base=(QElemType*)malloc(MAXSIZE *sizeof(QElemType);Q.base)nfail to alloc storage! Q.front=Q.rear=0;int EnQueue(SqQueue &Q,QElemType e) if(Q.rear+1)%MAXSIZE=Q.front)nthe queue is

9、 full! Q.baseQ.rear=e; Q.rear=(Q.rear+1)%MAXSIZE;int DeQueue(SqQueue &Q,QElemType & if(Q.front=Q.rear)s an empty queue! e=Q.baseQ.front; Q.front=(Q.front+1)%MAXSIZE;bool QueueEmpty(SqQueue Q) if(Q.rear=Q.front)/*无向图* int i=0; while(iG.vexnum)&(G.verticesi.data!=u) i+; if(i G.verticesi.firstarc=s;adj

10、vex=i;nextarc=G.verticesj.firstarc; G.verticesj.firstarc=p;-%d/*遍历*bool visitedMAXSIZE;void DFS(ALGraph G,int v) visitedv=true; %3d,G.verticesv.data); p=G.verticesv.firstarc; while(p)visitedp-adjvex) DFS(G,p-void DFSTraverse(ALGraph G)nshow DFS traver result: for(int v=0;vint NextAdjvex(ALGraph G,VN

11、ode v,int w) p=v.firstarc; while(p!=NULL &=w) if(p-adjvex=w &nextarc! return p-nextarc=NULL)void BFSTraverse(ALGraph G) SqQueue Q;nshow BFS traver result: int i,e; visitedi=false; InitQueue(Q);visitedi) visitedi=true; EnQueue(Q,i); while(!QueueEmpty(Q) DeQueue(Q,e); for(int u=FirstAdjvex(G,G.vertice

12、se);u=0;u=NextAdjvex(G,G.verticese,u) if(!visitedu) visitedu=true; printf(,G.verticesu.data); EnQueue(Q,u); /*主函数* CreateUDG(G); DFSTraverse(G); BFSTraverse(G);三、实验说明: 1.类型定义(邻接表存储) #define MAX_VERTEX_NUM 8 /顶点最大个数 typedef struct ArcNode int adjvex; /边的权 ArcNode; /表结点 #define VertexType int /顶点元素类型 typedef struct VNode int degree,indegree;/顶点的度,入度 VertexType data; VNode/*头结点*/,AdjListMAX_VERTEX_NUM; typedef struct AdjList vertices; int vexnum,arcnu

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

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