数据结构大纲答案6

实验编号:年 12 月 25 日 计算机科学学院 2014级 1班实验名称:图及其应用

姓名:陈元玲 学号:2014110105 指导老师:刘芳实验成绩:______ 一. 目的要求:

(1) 通过完成本实验,掌握图的两种基本的存储结构(邻接矩阵、邻接表),以及图

的基本算法实现(建立、遍历),并能运用图结构分析解决一些实际问题。

(2) 本实验训练的要点是:图的两种基本存储结构,及各种操作的算法实现(建立、

遍历、图的典型应用)。

二. 实验内容:

(1) 建立无向图和有向图的邻接矩阵存储,计算顶点的度,并输出图的基本信息。

//1.h

#include

#include

#include

#include

#include

#include

#define OK 1

#define ERROR 0

#define TRUE 1

#define FALSE 0

#define OVERFLOW -1

typedefint Status;

//2.h

#define INIFINITY 1000 // 最大值

//最大顶点数 #define MAX_VERTEX_NUM 20

typedefenum{DG,DN,UDG,UDN} GraphKind; //图的四种类型

typedef char VertexType;

typedefstruct {

VertexTypevexs[MAX_VERTEX_NUM]; //顶点向量

int arcs[MAX_VERTEX_NUM][MAX_VERTEX_NUM];//邻接矩阵

intvexnum,arcnum;

GraphKind kind;

}MGraph; //顶点数和弧的数目 //图的种类

//3.h

intLovateVex(MGraphG,VertexType v){

for (int i=0;G.vexs[i]!=v;i++);

return i;

}

Status CreateUDN(MGraph&G){

inti,j,k;

VertexType v1,v2;

int w;

cout

cin>>G.vexnum>>G.arcnum;

cout

for (i=0;i>G.vexs[i];

for (i=0;i

for (j=0;j

cout

for (k=0;k

cin>>v1;

cin>>v2; cin>>w;

i=LovateVex(G,v1);

j=LovateVex(G,v2); G.arcs[i][j]=w;

G.arcs[j][i]=G.arcs[i][j];

}//for k

return OK;

}//CreateUDN

Status CreateDN(MGraph&G){

inti,j,k;

VertexType v1,v2;

int w;

cout

cin>>G.vexnum>>G.arcnum;

cout

for (i=0;i>G.vexs[i];

for (i=0;i

for (j=0;j

cout

for (k=0;k

cin>>v1;

cin>>v2; cin>>w;

i=LovateVex(G,v1);

}//for k

return OK;

}//CreateDN

Status CreateUDG(MGraph&G){

inti,j,k;

VertexType v1,v2;

int w;

cout

cin>>G.vexnum>>G.arcnum;

cout

for (i=0;i>G.vexs[i];

for (i=0;i

for (j=0;j

cout

for (k=0;k

cin>>v1;

cin>>v2;

i=LovateVex(G,v1);

j=LovateVex(G,v2); G.arcs[i][j]=1;

G.arcs[j][i]=G.arcs[i][j];

}//for k

return OK;

}//CreateUDG

Status CreateDG(MGraph&G){

inti,j,k;

VertexType v1,v2;

int w;

cout

cin>>G.vexnum>>G.arcnum;

cout

for (i=0;i>G.vexs[i];

for (i=0;i

for (j=0;j

cout

for (k=0;k

cin>>v1;

cin>>v2;

i=LovateVex(G,v1);

}//for k

return OK;

}//CreateDG

Status CreateGraph(MGraph&G){

int kind;

cout

cin>>kind;

G.kind=(GraphKind)kind;

switch (G.kind){

case DG

case DN :return CreateDG(G); :return CreateDN(G); j=LovateVex(G,v2); G.arcs[i][j]=1;

case UDG :return CreateUDG(G);

case UDN :return CreateUDN(G);

default :return ERROR;

}

}//CreateGraph

voidPrintGraph(MGraph G){

inti,j;

cout

cout

cout

for (i=0;i

cout

for (i=0;i

cout

}//for i

cout

}

voidGraphDegree(MGraph G){

intindegree[MAX_VERTEX_NUM]={0},outdegree[MAX_VERTEX_NUM]={0}; int i;

switch (G.kind){

case DN :

case DG :FindIndegree(G,indegree);

for (i=0;i

case UDN :

case UDG :FindOutdegree(G,outdegree);

}

cout

}//GraphDegree

//main.cpp

#include "1.h"

#include "2.h"

#include "3.h"

void main(){

MGraph G;

CreateGraph(G); //创建图 for (i=0;i

PrintGraph(G); //输出图

GraphDegree(G); //计算图中顶点的度,并输出

cout

}

(2) 建立有向图的邻接表存储表示,并根据存储计算顶点的出度和入度,然后输

出图的基本信息。

//1.h

#include

#include

#include

#include

#include

#include

#define OK 1

#define ERROR 0

#define TRUE 1

#define FALSE 0

#define OVERFLOW -1

typedefint Status;

#define INIFINITY 1000 // 最大值

//最大顶点数 #define MAX_VERTEX_NUM 20

typedefenum{DG,DN,UDG,UDN} GraphKind; //图的四种类型 typedef char VertexType;

typedefintInfoType;

typedefstructArcNode{

intadjvex;

InfoType weight;

structArcNode *nextarc;

}ArcNode;

typedefstructVnode{

VertexType data;

ArcNode *firstarc;

}VNode, AdjList[MAX_VERTEX_NUM ];

typedefstruct {

AdjList vertices;

intvexnum,arcnum;

GraphKind kind;

}ALGraph;

//3.h

intLovateVex(ALGraphG,VertexType v){

for (int i=0;G.vertices[i].data!=v;i++);

return i;

}

Status CreateUDN(ALGraph&G){

inti,j,k;

VertexType v1,v2;

InfoType w;

ArcNode *p,*q;

cout

cin>>G.vexnum>>G.arcnum;

cout

for (i=0;i

}

cout

cin>>v1;

cin>>v2; cin>>w; i=LovateVex(G,v1); j=LovateVex(G,v2); p=(ArcNode *)malloc (sizeof(ArcNode )); p->adjvex=j; p->weight=w; p->nextarc=G.vertices[i].firstarc; cin>>G.vertices[i].data; G.vertices[i].firstarc=NULL;

G.vertices[i].firstarc=p;

q=(ArcNode *)malloc (sizeof(ArcNode ));

q->adjvex=i; q->nextarc=G.vertices[j].firstarc;

G.vertices[j].firstarc=q;

}//for k

return OK;

}//CreateUDN

Status CreatDN(ALGragh&G){

Status CreateGraph(ALGraph&G){

int kind;

cout

G.kind=(GraphKind)kind;

switch (G.kind){

//case DG

case DN :return CreateDG(G); :return CreateDN(G);

// case UDG :return CreateUDG(G);

case UDN :return CreateUDN(G);

default :return ERROR;

}

}//CreateGraph

voidPrintGraph(ALGraph G){

inti,j;

ArcNode *p;

cout

cout

for (i=0;i

for (i=0;i

coutadjvex; coutnextarc; }//while cout

}//for

cout

}

//main.cpp

#include "1.h"

#include "3.h"

void main(){

ALGraph G;

CreateGraph(G); //建立图 PrintGraph(G); //输出图

}

三.结果及分析 1.

2.


相关文章

  • 飞机维修机务考试维修大纲
  • 选择题 1. 根据现代民用航空适航规章要求,飞机的结构设计应符合( )设计标准. A. 损伤容限 B. 安全寿命 C. 故障安全 D. 余度 答案:A 难度:E 2. 影响飞机维修性的主要因素是( ). A. 安全性.可靠性.经济性 B. 可靠性.经济性.快速性 C.科学性.可靠性.经济性 D.先进 ...

  • ★20**年江苏高考化学大纲解析及备考建议
  • [LiuXue86.Com - 高考理综]2015江苏高考化学大纲解析及备考建议 2015江苏高考化学大纲解析及备考建议 化学部分考点要求有所提升 解读人:赵恬(高三化学备课组长) [变化]主要变化在考点要求方面. 一是个别考点范围进行了微调."能用电子排布式表示1-36号元素的原子及简单 ...

  • 城管考试大纲20**年上海城管行测大纲
  • 城管考试大纲2015上海城管行测大纲 2015上海城管考试行测大纲内容 一.考试科目和结构 公共科目笔试分为<行政职业能力测验>和<申论(城管方向)>,全部采取闭卷考试方式. (一)<行政职业能力测验> <行政职业能力测验>为客观性试题,考试时限90分 ...

  • 绪论的内容
  • 绪论的内容 一.执业药师考试药化考什么内容 二.2011年和2012年重点考了什么 三.执业药师考试的题型和题量 四.本课程的教学方法是什么 五.怎么学这门课 一.执业药师考试药化考什么内容 药物化学的考试内容主要包括:(参见考试大纲 P137) 1. 各类药物的分类.结构类型.作用机制.构效关系和 ...

  • [体育单招]文化课考试大纲
  • [体育单招]文化课考试大纲 发布日期:2010-8-21 英语考试大纲: (一).考试要求 考生应掌握英语的基本语言知识,读音基本正确,初步掌握英语的基础词汇,能基本掌握和运用英语的基本语法规则,具有一定的综合应用英语语言的能力. (二).考试形式与试卷结构 1.答卷方式:闭卷.笔试 2.考试时间: ...

  • 广东省成人高等教育学士学位英语考试大纲20**年
  • 广东省成人高等教育学士学位英语考试大纲(非英语专业用)(2012年) 一.考试性质 成人高等教育非英语专业学士学位英语水平考试是由各省级高等教育主管部门组织的统一考试,其目的是为了客观地测试非英语专业成人本科毕业生申请学士学位者的英语语言知识和英语运用等相关能力,考查其是否达到普通本科教育非英语专业 ...

  • 雅思雅思阅读教学大纲
  • 雅思阅读教学大纲 [课程代码] [课程中文名称] 雅思阅读 [课程英文名称] Ielts Reading [学分]1 学分 [总学时] 28学时 [讲授学时] 28学时 一.教学目标 本课程教学目标:了解雅思阅读内容与技能:提高雅思阅读考试的应试能力:讲解词汇,语法以及阅读技巧:提高学生的英语阅读水 ...

  • 20**年英语考研大纲(英语一)
  • 2015年考研英语(一)考试大纲 I. 考 试 性 质 英语(一)考试是为高等学校和科研院所招收硕士研究生而设置的具有选拔性质的全国统一入学考试科目,其目的是科学.公平.有效地测试考生对英语语言的运用能力,评价的标准是高等学校非英语专业本科毕业生所能达到的及格或及格以上水平,以保证被录取者具有一定的 ...

  • 农业知识综合三考试大纲
  • 农业知识综合三考试大纲 一.前言 为指导应考人员了解2010年全日制专业硕士学位入学考试的内容和要求,编写了<农业知识综合三>(2010). 本大纲是对2010年全日制专业硕士学位考试内容及要求的总规定,按照国家对考试的有关规定,本大纲根据2010年全日制专业硕士学位考试的目的和获得专业 ...

  • 高级统计师备考指南
  • 高级统计师考评结合考试参考资料 高级统计师考评结合考试应考 人员备考指南 全国统计专业技术资格考试办公室 二00六年二月二十三日 目录 第一部分 高级统计师专业技术工作能力要求 第二部分 如何应考高级统计师 一.考试的目标和要求 二.解读<高级统计实务科目考试大纲> 三.考试命题的特点分 ...

© 2024 范文中心 | 联系我们 webmaster# onjobs.com.cn