• 大小: 237KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-06-07
  • 语言: C/C++
  • 标签: 数据结构  邻接表  

资源简介

自己做的校园导游咨询系统,在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


评论

共有 条评论