数据结构习题集(李冬梅 第2版)C语言版源程序习题源代码习题集-算法6-2.docx

上传人:太** 文档编号:60551725 上传时间:2022-11-16 格式:DOCX 页数:2 大小:14.29KB
返回 下载 相关 举报
数据结构习题集(李冬梅 第2版)C语言版源程序习题源代码习题集-算法6-2.docx_第1页
第1页 / 共2页
数据结构习题集(李冬梅 第2版)C语言版源程序习题源代码习题集-算法6-2.docx_第2页
第2页 / 共2页
亲,该文档总共2页,全部预览完了,如果喜欢就下载吧!
资源描述

《数据结构习题集(李冬梅 第2版)C语言版源程序习题源代码习题集-算法6-2.docx》由会员分享,可在线阅读,更多相关《数据结构习题集(李冬梅 第2版)C语言版源程序习题源代码习题集-算法6-2.docx(2页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、/邻接表存储图#include using namespace std;/定义最大顶点数 #define MVNum 128 /定义状态类型 #define Status int /函数结果状态代码 #define OK 1 #define ERROR 0 #define INFEASIBLE 0 #define EXISTED 2typedef struct ArcNode /定义边结点int adjvex; struct ArcNode *nextarc;ArcNode;typedef struct VexNode /定义顶点结点int data;struct ArcNode *first

2、arc; VexNode;typedef struct ALGraph /定义图的结构体类型VexNode verticesMVNum + 1;int vexnum, arcnum; /图当前的顶点数和边数 ALGraph;bool visitedMVNum = 0 ;/定义顺序栈的结构类型typedef struct SqStack int top;int vexticsMVNum + 1;SqStack;/栈初始化函数void InitStack(SqStack &s) s.top = -1;/元素入栈Status Push(SqStack &s, int v) if (s. top =

3、MVNum) return ERROR;/栈已满,无法放入s.vextics+s.top = v;return OK;)/元素出栈Status Pop(SqStack &s, int &k) if (s. top = -1) return ERROR; /z 栈已空 k = s.vexticss.top-;return OK;)/判断栈是否为空bool StackEmpty(SqStack s) return s.top = -1; )/对于每个顶点,它的边采用头插法插入void insertArcNode (VexNode & vnode z int adj vex) /向邻接表顶点中插入一

4、条边结点ArcNode *arcnode = new ArcNode;arcnode-adjvex = adjvex;arcnode-nextarc = vnode.firstarc;vnode.firstarc = arcnode;/采用邻接矩阵表示法,创立无向图graphStatus createUDN(ALGraph &graph, int vexnum, int arcnum) graph, vexnum = vexnum;/初始化图的总顶点数graph. arcnum = arcnum;/初始化图的总边数for (int i = 0; i = graph.vexnum; i+) /初

5、始图中的顶点信息graph.verticesi.data = i;graph.verticesi.firstarc = NULL;)int vex_one, vex_two;/一条边依附的两个顶点 vex_one 和 vex_twofor (int i = 0; i vex_one vex_two;insertArcNode(graph.verticesvex_one, vex_two); insertArcNode(graph.verticesvex_two, vex_one); return OK; /创立成功,返回成功代码/定义打印无向图函数void printUDN(ALGraph g

6、raph) for (int i = 1; i = graph. vexnum; i+) /输出边的信息(每行第一个数字为顶点)(注意0号顶点不输出)cout graph.verticesi.data nextarc) /开始输出每个顶点上所链接的边信息cout adjvex ” n;) cout endl;)/输出结束)/构造一个空栈/顶点v进栈/栈非空/栈顶元素k出栈/访问第k个顶点/P指向k的边链表的第一个边结点/表示w是k的邻接点/如果w未访问,w进栈/P指向下一个边结点/从第v个顶点出发非递归实现深度优先遍历图G void DFS(ALGraph G, int v) SqStack

7、S;InitStack(S);Push(S, v);while (!StackEmpty(S) int k;Pop (Sz k);if (!visitedk) cout adjvex;if (!visitedw) Push(Sz w); p = p-nextarc;/end if/end while cout n m; /输入n和m的值ALGraph G;cout请依次输入m条边所依附的两端顶点:n”;createUDN(Gz n, m);/连通图构建完毕并打印图的信息 printUDN(G);cout ”请输入深度遍历开始顶点编号:b” endl; int v;cin v;DFS(Gz v);system(pause);return 0;/程序运行结束测试用例展示(以程序一次运行周期为例) 输入数据: 4 3 1 22 31 4 输出结果: 14 2 2 3 1 3 2 4 1输入数据:1输出结果:1234

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 应用文书 > 解决方案

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁