文档介绍:程序设计实习
实验报告
班级___信A0811班__
学号___34号_______
姓名___李慎军______
指导老师周小雄
2010-2011第1学期
实验四计算器
班级:_信A0811_____ 学号: 34号____姓名:_ __李慎军__ 成绩:__________
指导教师签名:__________
问题描述:用无向图表示你所在学校的校园景点平面图,图中顶点表示主要景点,存放景点的编号、名称、简介等。
设计要求:
;
;
。
二、算法说明
1、定义一个结构体,在结构体中定义数组,将班级的班级数以及人数存入到数组中,这样将数组元素输出,用图遍历可以找到地点。
2、通过对地点的指向可得到地点信息。
三、测试结果(这部分需文字与图示结合)
主页面
2、查询景点:
3、查询结果为:
4、查询界面:
源代码为:
#include ""
#include ""
#include ""
#include ""
#define Max 20000//最大值为20000
#define NUM 10//顶点最大数为10
typedef struct ell//弧信息
{
int adj; //权值,顶点距离
}ell;
typedef struct VertexType//顶点类型
{
int number;
char *sight; //景点名称
char *description;//景点介绍
}VertexType;
typedef struct
{
VertexType vex[NUM];//顶点向量
ell arcs[NUM][NUM];//数组表示,邻接矩阵
int vexnum,um;//图的当前顶点数和弧数
}MGraph;
MGraph G;
int P[NUM][NUM]; //定义景点指针
long int D[NUM]; //最短距离
int x[10]={0};
void CreateUDN(int v,int a);
void narrate();
void ShortestPath(int num);
void output(int sight1,int sight2);
char Menu();
void search();
char SearchMenu();
void HaMiTonian(int);
void NextValue(int);
void display();
void main()
{
int v0,v1;
char ck;
CreateUDN(NUM,14);//构造图
do
{
ck=Menu();
switch(ck)
{
case '1':
system("cls");
narrate();
printf("\n\n\t\t\t请选择起点景点(0~9):");
scanf("%d",&v0);
printf("\t\t\t请选择终点景点(0~9):");
scanf("%d",&v1);
ShortestPath(v0);
output(v0,v1);
printf("\n\n\t\t\t\t请按ENTER继续...\n");
getchar();
getchar();
break;
case '2':search();
break;
case '3':
system("cls");
//narrate();
x[0]=1;
HaMiTonian(1);
printf("\n\n\t\t\t\t请按任意键继续...\n");
getchar();
getchar();
break;
};
}while(ck!='e');
}
char Menu()
{
char c;
int flag;
do
{
flag=1;
system("cls");
narrate();
printf("\n\t\t\t┏━━━━━━━━━━━━━━━┑\n");
printf("\t\t\t┃┃\n");
printf("\t\t\t┃ 1、查询景点路径┃\n");
printf("\t\t\t┃ 2、查询景点信息┃\n");
printf("\t\t\t┃ 3、推荐参观路线┃\n");
printf("\t\t\t┃ e、退出┃\n");
printf("\t\t\t┃┃\