资源简介
自己做的校园导游咨询系统,在VC6.0上运行,能够新建地图、加入景点、删除景点、删除两条景点之间道路、查找景点、一景点到其他景点的最短路径、一景点到另一景点的最短路线。 仅供借鉴!!
代码片段和文件信息
#include
#include
#include “MENU.h“
#include
#include
#define MAX 1000
#define MAX_NAME 200 //顶点字符串的最大长度 + 1
#define MAX_VERTEX_NUM 200
#define FALSE 0
#define TRUE 1
typedef int status;
typedef char VertexType[MAX_NAME];
typedef int intint;
int visited[MAX_VERTEX_NUM];
void(*VisitFunc)(char* v); /* 函数变量(全局量) */
typedef struct ArcNode //没有相关信息
{
int adjvex; //所指向的顶点的下标
intint *info; //网权值
struct ArcNode *nextarc;
}ArcNode; //边结点
typedef struct
{
VertexType data;
char NR[MAX];
ArcNode *firstarc;
}VNodeAdjList[MAX_VERTEX_NUM]; //头结点
typedef struct
{
AdjList vertexs;
int vexnumarcnum; //图当前顶点数和弧数
}Graph; //图
int locate_vertex(Graph *GVertexType u) //返回顶点在图中位置
{
int i;
for(i = 0;i < G->vexnum;++i)
if(strcmp(uG->vertexs[i].data) == 0)
return i;
return -1;
}
//****************队列*********************
typedef int Elem;
#define MAXSIZE MAX_VERTEX_NUM
typedef struct
{
Elem elem[MAXSIZE];
int front;
int rear;
}SeqQueue;
void InitQueue(SeqQueue *Q) //初始化
{
Q->front=Q->rear=0;
}
int IsEmpty(SeqQueue *Q) //判空
{
if(Q->front==Q->rear)
return TRUE;
return FALSE;
}
int IsFull(SeqQueue *Q) //判满
{
if((Q->rear+1)%MAXSIZE==Q->rear)
return TRUE;
return FALSE;
}
int EnterQueue(SeqQueue *QElem x) //进队
{
if((Q->rear+1)%MAXSIZE==Q->front)
return FALSE;
Q->elem[Q->rear]=x;
Q->rear=(Q->rear+1)%MAXSIZE;
return TRUE;
}
int DeleteQueue(SeqQueue *QElem *x) //出队
{
if(Q->front==Q->rear)
return FALSE;
*x=Q->elem[Q->front];
Q->front=(Q->front+1)%MAXSIZE;
return TRUE;
}
int GetFront(SeqQueue *QElem *x) //取队头元素
{
if(Q->front==Q->rear)
return FALSE;
*x=Q->elem[Q->front];
return TRUE;
}
//******************图******************
status CreateGraph(Graph *G) //创建图 写入
{
FILE *fp*fp1*fp2;
int ijk;
int w;
VertexType vavb;
ArcNode *p;
printf(“请输入 景点数目 和 道路条数: “);
scanf(“%d %d“&G->vexnum&G->arcnum);
fp=fopen(“num““wt“); // num 储存 顶点数 和 弧数
fprintf(fp“%d %d “G->vexnumG->arcnum);
fclose(fp);
printf(“请输入景点名称 经典简介:\n“);
fp1=fopen(“content““wt“); // content 储存地图 名称 介绍
for(i = 0;i < G->vexnum;++i)
{
printf(“请输入第%d个景点和简介:“i+1);
scanf(“%s %s“G->vertexs[i].dataG->vertexs[i].NR);
G->vertexs[i].firstarc = NULL;
fprintf(fp1“%s %s “G->vertexs[i].dataG->vertexs[i].NR);
}
fclose(fp1);
printf(“请输入景点之间的 联系 以及 长度:\n“G->arcnum);
fp2=fopen(“pow““wt“); // pow 储存 弧之间的关系 及 权值
for(k = 0;k < G->arcnum;++k)
{
printf(“请输入第%d个景点和简介:“k+1);
scanf(“%s %s %d“vavb&w);
fprintf(fp2“%s %s %d “vavbw);
i = locate_vertex(Gva);
j = locate_vertex(Gvb);
p = (ArcNode*)malloc(s
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 544 2014-12-22 15:28 map\content
文件 544 2014-12-22 15:28 map\Debug\content
文件 6 2014-12-19 17:47 map\Debug\num
文件 525 2014-12-22 15:28 map\Debug\pow
文件 217167 2014-12-23 16:42 map\Debug\Star_map.exe
文件 297484 2014-12-23 16:42 map\Debug\Star_map.ilk
文件 61269 2014-12-23 16:42 map\Debug\Star_map.obj
I.A.... 236664 2014-12-22 17:04 map\Debug\Star_map.pch
文件 558080 2014-12-23 16:42 map\Debug\Star_map.pdb
文件 33792 2014-12-23 16:42 map\Debug\vc60.idb
文件 53248 2014-12-23 16:42 map\Debug\vc60.pdb
文件 4741 2014-12-22 16:57 map\MENU.h
文件 6 2014-12-19 17:47 map\num
文件 525 2014-12-22 15:28 map\pow
文件 18369 2014-12-23 16:36 map\Star_map.cpp
目录 0 2014-12-23 16:42 map\Debug
目录 0 2014-12-23 21:28 map
----------- --------- ---------- ----- ----
1482964 17
- 上一篇:apriori算法的c语言实现
- 下一篇:C++简单程序设计图书管理系统
相关资源
- 编写算法删除单链表L中所有值为e的数
- C++数据结构分段线性插值
- 数据结构课程设计汉诺威塔
- C语言栈和队列代码实现
- 严蔚敏建立词索引表
- 无向图 破圈法求最小生成树
- 日历管理系统.cpp
- 数据结构编程题目及答案
- 单项选择标准化考试系统 C语言版
- 数据结构课程设计应用索引文件和查
- 数据结构严蔚敏C语言第二版习题答案
- 数据结构的二叉树用C语言实现的代码
- 文章编辑数据结构课程设计c语言编写
- 数据结构上机题
- 数据结构C语言 一元多项式的加减法
- 数据结构 走迷宫大作业 c语言完整代
- 马踏棋盘的源程序,C语言编写,数据
- 数据结构c语言版上机题代码汇总
- 数据结构C语言之哈夫曼编码
- 数据结构表达式求值,c语言版,能计
- 银行管理系统——数据结构C
- c语言银行管理系统
- 严蔚敏.吴伟民等《数据结构(c语言版
- C++数据结构与算法(第4版) 完整版
- 数据结构栈、队列、二叉树、顺序查
- 数据结构实验和作业严蔚敏C)
- 胡学刚版 数据结构 实验3代码 合工大
- 数据结构题集答案(C语言版)严蔚敏
- 图书管理系统C语言+数据结构与算法
- 《数据结构(c语言版)习题答案》严
评论
共有 条评论