• 大小: 3KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-06-03
  • 语言: C/C++
  • 标签:

资源简介

用数据结构方法完成校园导航,适合数据结构课程设计

资源截图

代码片段和文件信息

#include “string.h“ 
#include “stdio.h“ 
#include “malloc.h“
#include “stdlib.h“
#define Max 20000
#define NUM 10
typedef struct ArcCell{
 int adj;  /* 相邻接的景点之间的路程 */
}ArcCell;   /* 定义边的类型 */
typedef struct VertexType{
 int number;  /* 景点编号 */
 char *sight;  /* 景点名称 */
}VertexType;   /* 定义顶点的类型 */
typedef struct{
 VertexType vex[NUM]; /* 图中的顶点,即为景点 */
 ArcCell arcs[NUM][NUM]; /* 图中的边,即为景点间的距离 */
 int vexnumarcnum; /* 顶点数,边数 */
}MGraph;   /* 定义图的类型 */
MGraph G;   /* 把图定义为全局变量 */
int P[NUM][NUM];  /*  */
long int D[NUM];  /* 辅助变量存储最短路径长度 */
int   x[9]={0}; 
void CreateUDN(int vint a); /* 造图函数 */
void narrate();   /*说明函数*/
void ShortestPath(int num); /*最短路径函数*/
void output(int sight1int sight2); /*输出函数*/
char Menu();   /* 主菜单 */
char SearchMenu();  /* 查询子菜单 */

void main() /* 主函数 */
{
 
 int v0v1;
 char ck;
 CreateUDN(NUM21);
 do
 {  
  ck=Menu();
  switch(ck)
  {
  case ‘a‘:
   system(“cls“);
   narrate();
   printf(“\n\n\t请选择起点景点(0~9):“);
   scanf(“%d“&v0);
   printf(“\t请选择终点景点(0~9):“);
   scanf(“%d“&v1);
   ShortestPath(v0);  /* 计算两个景点之间的最短路径 */
   output(v0v1);     /* 输出结果 */
   printf(“\n\n\t\t请按任意键继续...\n“);
   getchar();
   getchar();
   break;
 
  };
 }while(ck!=‘b‘);
 
 
}
char Menu()  /* 主菜单 */
{
 char c;
 int flag;
 do{
  flag=1;
  system(“cls“);
  narrate();
  printf(“\n\t                                \n“);
  printf(“\t                                  \n“);
  printf(“\t        a、查询景点路径           \n“);
  printf(“\t        b、退出                   \n“);
  printf(“\t                                  \n“);
  printf(“\t                                  \n“);
  printf(“\t\t请输入您的选择:“);
  scanf(“%c“&c);
  if(c==‘a‘||c==‘b‘)
   flag=0;
 }while(flag);
 return c;
}








void CreateUDN(int vint a) /* 造图函数 */

 int ij;
 G.vexnum=v;  /* 初始化结构中的景点数和边数 */
 G.arcnum=a;
 for(i=0;i 
 /* 初始化没一个景点名及其景点描述 */
 
 G.vex[0].sight=“宿舍区“;

 G.vex[1].sight=“科学楼“;

 G.vex[2].sight=“信息楼“;
 
 G.vex[3].sight=“逸夫楼“;

 G.vex[4].sight=“映雪湖“;
 
 G.vex[5].sight=“体育馆“;

 G.vex[6].sight=“博文楼“;

 G.vex[7].sight=“图书馆“;

 G.vex[8].sight=“外文楼“;
 
 G.vex[9].sight=“建艺馆“;
 
 /* 这里把所有的边假定为20000,含义是这两个景点之间是不可到达 */
 for(i=0;i  for(j=0;j   G.arcs[i][j].adj=Max;
  
   /*
   
     下边是可直接到达的景点间的距离,由于两个景点间距离是互相的,
     所以要对图中对称的边同时赋值。
     
  */
  G.arcs[0][1].adj=G.arcs[1][0].adj=100;
  G.arcs[1][3].adj=G.arcs[3][1].adj=150;
  G.arcs[0][4].adj=G.arcs[4][0].adj=100;
  G.arcs[0][5].adj=G.arcs[5][0].adj=200;
  G.arcs[4][1].adj=G.arcs[1][4].adj=10;
  G.arcs[6][3].adj=G.arcs[3][6].adj=50;
  G.arcs[8][6].adj=G.arcs[6][8].adj=50;
  G.arcs[8][9].adj=G.arcs[9][8].adj=100;
  G.arcs[4][7].adj=G.arcs[7][4].adj=400;
  G.arcs[2][7].adj=G.arcs[7][2].adj=100;
  G.arcs[7][9].adj=G.arcs[9][7].adj=110;
  G.arcs[2][9].adj=G.arcs[9][2].adj=30;

}
void narrate() /* 说明函数 */
{

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       5998  2009-06-30 23:54  校园导航.cpp

----------- ---------  ---------- -----  ----

                 5998                    1


评论

共有 条评论

相关资源