《数据结构》实验报告(六)

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

《数据结构》实验报告(六)

图的操作(3学时)

一、实验目的

1、掌握图的顺序和链式存储结构及其编程。

2、熟悉图的邻接矩阵建立及输出等基本操作。

二、实验内容

1、根据下列程序环境的设置,注释下列标记的语句,并填写下表中的问题。#include "stdio.h"

#include "stdlib.h"

#define OK 1

#define ERROR -1

#define TRUE 1

#define FALSE 0

#define OVERFLOW -2

#define elemType elemtype

typedef int status;

//下面添加图相关的定义

#define max 20 //最大顶点数设为20

typedef char vertextype; //顶点类型设为字符型

typedef int edgetype; //边的权值设为整型

typedef struct Mgraph

{ vertextype vexs[max]; //顶点数组

edgetype edges[max][max]; //邻接矩阵,即边表

int n,e; //顶点数和边数

}Mgraph; //Mgraph是以邻接矩阵存储的图类型

//邻接链表的结构定义

typedef struct arcnode /*注1*/

{ int adjvex; /*注2*/

struct arcnode *next; /*注3*/

int info;

}arcnode;

typedef struct Vnode /*注4*/

{ vertextype data; /*注5*/

arcnode * first; /*注6*/

}Vnode;

typedef struct

{

Vnode adjList[max]; /*注7*/

int n,e; /*注8*/

}ALGraph; /*注9*/

表:

图变量Mgraph和ALGraph的不同是_______结构体内容不同_______________________

/*注1*/的内容是:_______声明一个结构体__________________________________

/*注2*/的内容是:_____________整型变量____________________________

/*注3*/的内容是:________ arcnode 类型的指针_________________________________

/*注4*/的内容是:________声明一个结构体_________________________________

/*注5*/的内容是:_________整型变量data________________________________

/*注6*/的内容是:________ arcnode 类型的指针_________________________________

/*注7*/的内容是:_______ Vnode 的数组__________________________________

/*注8*/的内容是:__________声明两个整型变量n e_______________________________ /*注9*/的内容是:__________结构体名字ALGraph_______________________________

2、在第1题的基础上,输入下面的创建图的邻接矩阵的函数。回答下列问题并填写到

下表中。

//建立一个图的邻接矩阵

void Createmgraph(Mgraph &G, int n1, int e1,int kind)

{ //建立顶点数为n1,边数为e1的图G的邻接矩阵存储

int i,j,k,w=kind; //kind=0为有向图;kind=1为无向图

char ch;

getchar();

G.e=e1; /*注1*/

G.n=n1; /*注2*/

printf("请输入顶点信息(输入格式为:顶点字符<回车>,如:abcde<回车>):\n");

//输入顶点信息,建立顶点表

for(i=1;i<=G.n;i++)

scanf("%c",&(G.vexs[i]));

getchar();

for (i=1;i<=G.n;i++)

for (j=1;j<=G.n;j++) G.edges[i][j]=0; //初始化邻接矩阵

printf("请输入每条边对应的两个顶点的序号(输入格式为:i,j):\n");

//输入e条边,建立邻接矩阵G.edges[i][j]=1;

for (k=1;k<=G.e;k++)

{ scanf("%d,%d",&i,&j); G.edges[i][j]=1; /*注3*/ if(kind) G.edges[j][i]=G.edges[i][j]; /*注4*/

}

}

表:

函数名是:_______ Createmgraph ___________________

该函数参数个数和含义是:_______数组点数边数____有无向________________

函数中图的顶点信息存储在:___________ G.n _____________________________

函数中边的数组是:_______________ G.e __________________________

/*注1*/的内容是:____________将顶点数__给GN_______________________

/*注2*/的内容是:______________将边数给GE_________________________

/*注3*/的内容是:______________输入两条相邻边的顶点___________________________ /*注4*/的内容是:_________判断如果是无向图对应节点为1__________________________

3、在第1和第2题的基础上,编写显示图中顶点和边的函数。

相关文档
最新文档