版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、0 01 13 32 2(a) (a) 无向图无向图G1G1(d) (d) 图图G1G1的邻接矩的邻接矩阵阵 0 1 2 3 0 1 2 30 0 1 0 10 0 1 0 11 1 0 1 11 1 0 1 12 0 1 0 12 0 1 0 13 1 1 1 03 1 1 1 00 01 13 32 20 01 12 23 3 1 1 3 3 0 0 0 0 2 2 建立邻接表建立邻接表 函数函数CreateGraphCreateGraph构造一个有构造一个有n n个顶点,但不包含边的有向图。由于图个顶点,但不包含边的有向图。由于图的顶点数事先并不知道,所以我们使用动态存储分配的一维指针数
2、组。的顶点数事先并不知道,所以我们使用动态存储分配的一维指针数组。void CreateGraph(Graphvoid CreateGraph(Graph* * g, int n) g, int n) int i; int i; g-Vertices=n; g-Vertices=n; g-A=(ENode g-A=(ENode* * *)malloc(n)malloc(n* *sizeof(ENodesizeof(ENode* *); ); for(i=0; iAi=NULL; for(i=0; iAi=NULL; 0 01 1.n-1n-1. 边的搜索边的搜索0 01 12 23 32 2
3、1 1 0 0 3 3 1 1 3 3 1 1 3 3 2 2 0 0 1,21,2是否有边?是否有边?/搜索边的函数搜索边的函数BOOL Exist(Graph g, int u, int v) int n; ENode* p; n=g.Vertices; if(un-1) return FALSE; for(p=g.Au; p&p-AdjVex!=v; p=p-NextArc; if (!p) return FALSE; return TRUE; 插入边的函数插入边的函数BOOL Add(Graph *g, int u, int v, T w) int n; ENode *p; n
4、=g-Vertices; if (u0 | vn-1 | vn-1 | u=v | Exist(*g, u, v) printf(BadInputn); return FALSE; p=NewENode(v, w, g-Au); g-Au=p; return TRUE; 0 01 12 23 3 1 1 3 3 0 0 0 0 2 2 p p3 30 01 13 32 2插入邻接表中由指针插入邻接表中由指针AuAu所指示的单链表的最前面所指示的单链表的最前面ENodeENode* * NewENode( int vex, T weight, ENode NewENode( int vex, T
5、 weight, ENode* * nextarc) nextarc) ENodeENode* * p; p; p=(ENodep=(ENode* *)malloc(sizeof(ENode); )malloc(sizeof(ENode); p-AdjVex=vex; p-AdjVex=vex; p-W=weight; p-W=weight; p-NextArc=nextarc; p-NextArc=nextarc; return p; return p; /删除边的函数删除边的函数BOOL Delete(Graph *g, int u, int v) int n=g-Vertices; EN
6、ode* p, *q; if(u-1 & uAu; q=NULL; while (p& p-AdjVex!=v) q=p; p=p-NextArc; if (p) if (q) q-NextArc=p-NextArc; else g-Au=p-NextArc; free(p); return TRUE; printf(BadInputn); return FALSE; 0 01 12 23 3 1 1 3 3 0 0 0 0 2 2 0 01 13 32 23 3P Pq=NULLq=NULL在由指针在由指针AuAu所指示的单所指示的单链表中,搜索链表中,搜索AdjVexAdj
7、Vex域的域的值为值为v v的边结点的边结点DFSDFS递归算法(递归算法( 【程序【程序10105 5】 )。)。void DFS(Graph g, int v, BOOL void DFS(Graph g, int v, BOOL * *visited)visited) ENode ENode * *w; w; visitedv=TRUE; printf(%d , v); visitedv=TRUE; printf(%d , v); for ( w=g.Av; w; w=w-NextArc) for ( w=g.Av; w; w=w-NextArc) if (!visitedw-AdjVe
8、x ) if (!visitedw-AdjVex ) DFS(g, w-AdjVex, visited); DFS(g, w-AdjVex, visited); void Traversal_DFS(Graph g)void Traversal_DFS(Graph g) BOOL visitedMaxSize; int i, n=g.Vertices; BOOL visitedMaxSize; int i, n=g.Vertices; for(i=0; in; i+) visitedi=FALSE; for(i=0; in; i+) visitedi=FALSE; for (i=0; in; i+) for (i=0; iNextArc) for (w=g.Au; w; w=w-NextArc) if (!visitedw-AdjVex) if (!visitedw-AdjVex) printf(%d , w-AdjVex); printf(%d , w-AdjVex); visitedw-AdjVex=
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年创意设计竞赛活动方案策划
- 2026年食品安全师考试重点笔记
- 2026年金融行业从业资格认证模拟题
- 2026年销售经理岗位测试题集
- 2026年自救互救急救方法知识课件
- 2026年电力自动化技术笔试题库
- 2026年危险化学品知识培训化工企业
- 2026年汽车行驶安全基础知识
- 2026年营养膳食知识竞赛
- 2026年急救证考核基础知识题
- 2026年北京市第一次普通高中学业水平合格性考试物理试卷(含答案)
- 哈三中2026年高三五月第四次模拟考试 语文试卷(含答案)
- 运输公司解除合作协议书
- 2026年触电事故现场急救(断电、心肺复苏)操作指南
- 2026中国铁路南宁局集团有限公司招聘高校毕业生80人三(本科及以上学历)考试备考题库及答案解析
- 陆上风力发电工程施工质量验收规程
- 2026年宁夏电投永利能源有限公司公开招聘考试模拟试题及答案解析
- 2026年部编版语文五年级下册期末考试真题及答案(共3份)
- 乡镇孕产妇管理奖惩制度
- 第四届山东省人工智能融合创新职业技能竞赛(人工智能训练师)试题库(含答案)
- 树仔菜种植技术
评论
0/150
提交评论