三图的顺序存储表示和实现概要.doc

  1. 1、本文档共29页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
三图的顺序存储表示和实现概要

数据结构实验报告 题 目:图的顺序存储表示和实现 学生姓名: 学 院: 班 级: 指导教师: 年 月 实验目的 掌握图的顺序存储表示和实现 实验内容 C1.h // c1.h (程序名) #includestring.h #includectype.h #includemalloc.h // malloc()等 #includelimits.h // INT_MAX等 #includestdio.h // EOF(=^Z或F6),NULL #includestdlib.h // atoi() #includeio.h // eof() #includemath.h // floor(),ceil(),abs() #includeprocess.h // exit() #includeiostream.h // cout,cin // 函数结果状态代码 #define TRUE 1 #define FALSE 0 #define OK 1 #define ERROR 0 #define INFEASIBLE -1 // #define OVERFLOW -2 因为在math.h中已定义OVERFLOW的值为3,故去掉此行 typedef int Status; // Status是函数的类型,其值是函数结果状态代码,如OK等 typedef int Boolean; // Boolean是布尔类型,其值是TRUE或FALSE c3-2.h // c3-2.h 单链队列--队列的链式存储结构 typedef struct QNode { QElemType data; QNode *next; }*QueuePtr; struct LinkQueue { QueuePtr front,rear; // 队头、队尾指针 }; C7-1.h // c7-1.h 图的数组(邻接矩阵)存储表示 #define INFINITY INT_MAX // 用整型最大值代替∞ #define MAX_VERTEX_NUM 20 // 最大顶点个数 enum GraphKind{DG,DN,AG,AN}; // {有向图,有向网,无向图,无向网} typedef struct { VRType adj; // 顶点关系类型。对无权图,用1(是)或0(否)表示相邻否; // 对带权图,则为权值类型 InfoType *info; // 该弧相关信息的指针(可无) }ArcCell,AdjMatrix[MAX_VERTEX_NUM][MAX_VERTEX_NUM]; struct MGraph { VertexType vexs[MAX_VERTEX_NUM]; // 顶点向量 AdjMatrix arcs; // 邻接矩阵 int vexnum,arcnum; // 图的当前顶点数和弧数 GraphKind kind; // 图的种类标志 }; Bo3-2.cpp // bo3-2.cpp 链队列(存储结构由c3-2.h定义)的基本操作(9个) Status InitQueue(LinkQueue Q) { // 构造一个空队列Q if(!(Q.front=Q.rear=(QueuePtr)malloc(sizeof(QNode)))) exit(OVERFLOW); Q.front-next=NULL; return OK; } Status DestroyQueue(LinkQueue Q) { // 销毁队列Q(无论空否均可) while(Q.front) { Q.rear=Q.front-next; free(Q.front); Q.front=Q.rear; } return OK; } Status ClearQueue(LinkQueue Q) { // 将Q清为空队列 QueuePtr p,q; Q.rear=Q.front; p=Q.front-next; Q.front-next=NULL; while(p) { q=p; p=p-next; free(q); } return OK; } Status QueueEmpty(LinkQueue Q) { // 若Q为空队列,则返回TRUE,否则返回FALSE if(

文档评论(0)

ee88870 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档