校园导游图的课程设计(一)

思路:

1.  使用两个文件 arc 和 vex 分别存放 节点和弧信息

存放格式为:

typedef struct data{
char placename[NAMEMAX];
char placedata[DATAMAX];
}Data;
typedef struct arc{
int forvex;
int backves;
int weight;
}Arc;//文件存储结构体

2. 为了方便删除和添加,使用邻接表,邻接表的结构体

typedef struct arcnode{
        int adjvex;
        int weight;
        struct arcnode* next;
}ArcNode;

typedef struct vertexnode{
        Data vexdata;
        ArcNode * next;
}VertxNode;

typedef struct {
        VertxNode vertex[NUMMAX];
        int vexnum;
        int arcnum;
}ListMatrix;

3. 为了方便操做和模块化,将地图的节点和弧的添加分别抽象成模块

int  AddArc( ListMatrix * G  )
/*
 * 增加弧
 * 成功返回1
 * 失败返回0
 */
{
     char forvextemp[NAMEMAX];
     char backvextemp[NAMEMAX];
     int forvex;
     int backvex;
     ArcNode * temp;
     ArcNode * p;
     printf("输入起始点:");
     scanf("%s",forvextemp);
    if( (forvex = NametoNum( G, forvextemp )) == 0  )
    {
            return 0;
    }
    printf("输入终点:");
    scanf("%s",backvextemp);
    if( (backvex = NametoNum( G,backvextemp)) == 0 )
    {
            return 0;
    }//读取起点和终点

    G->arcnum++;//弧数加一

    temp = (ArcNode*)malloc(sizeof(ArcNode));
    printf("输入路径长度:");
    scanf("%d",&temp->weight);
    temp->adjvex = backvex;
    temp->next = NULL;//赋值

    p = G->vertex[forvex].next;
    while( p&&p->next )  p = p->next;
    if( !p )  G->vertex[forvex].next = p;
    else      p->next = temp; //挂链
    return 1;
}

4.整个程序,只有在开始时读 arc vex 文件,建立map,在退出时写文件,将可能被修改过的map,覆盖写入 arc vex 文件

其他所有操作都建立在内存中的map,不再对文件进行操作

int  MakeMap( ListMatrix *G )
/*
 * 利用文件建立地图
 * 输入存放节点的文件 fp1 ,存放弧的文件fp2
 *
*/
{
        FILE  * fp1;
        FILE  * fp2;
   int  nodecount = 0;
   int  arccount = 0;
   Data nodedata;
   Arc  arcdata;
   ArcNode * p;
   ArcNode * temp;
        if( (fp1=fopen("vex","ab+")) == NULL )
        {
             printf("vex打开错误");
             return 0;
        }
        if( (fp2=fopen("arc","ab+")) == NULL )
        {
                printf("arc打开错误\n");
                return 0;
        }

   while( fread(&nodedata,sizeof(Data),1,fp1) == 1 )
   {
           nodecount++;
           strcpy(G->vertex[nodecount].vexdata.placename,nodedata.placename);
           strcpy(G->vertex[nodecount].vexdata.placedata,nodedata.placedata);
           G->vertex[nodecount].next = NULL;
   }//读取节点

   if( nodecount != 0 )
   {
        while( fread( &arcdata,sizeof(Arc),1,fp2) == 1 )
        {
                arccount++;

                temp->next = ( ArcNode *)malloc(sizeof(ArcNode));
                temp->next->adjvex = arcdata.backves;
                temp->next->weight = arcdata.weight;
                temp->next->next = NULL;

                p = G->vertex[arcdata.forvex].next;
                while( p && p->next )  p = p->next;
                if( !p )    G->vertex[arcdata.forvex].next = temp;
                else        p->next =temp;//挂链
        }
   }//读取弧
   G->vexnum = nodecount;
   G->arcnum = arccount;
   fclose(fp1);
   fclose(fp2);
}

时间: 2024-09-30 14:49:16

校园导游图的课程设计(一)的相关文章

校园导游图的课程设计(零)

数据结构课程设计 题目 :校园导游图(家的图) Ps:可以是任何的地图,我可用上我家的地图,哈哈哈 要求 : 路线和地点不少于10个,使用文件存储 Ps: 使用两个文件,一个存储地点信息,一个存储路线信息,有兴趣的话可以做一个验证结构体(用来放在信息之前,指明信息的个数) 查询信息,使用结构体data,放在邻接矩阵的表头 最短路径 ,没写过,不过建立一个邻接表的准备是足够的 任意两点之间的最短路径(中转次数最少) 任意两点之间的最佳路径( 长度最短 ) 提供最佳布线方案,未知 增加和删除路线

校园导游图的课程设计(四)

看了两个小时的git教程,操作了一个小时,终于传了上去 直接上连接 https://github.com/magichan/MyGuide

校园导游图的课程设计(三)

两天和作一天吧 只要是作 prime 算法的实现,作用是找一个图的最小生成树,用的是列表 void Prim( ListMatrix *G, int start ) /* * 寻找一某一点为核心的最佳布线 * 即使用prime最小生成树 */ { struct{ int adjvex; int lowcost; }closedge[NUMMAX]; int i,j,k,m,min; ArcNode * p; closedge[start].lowcost = 0; for( i=1; i<=G-

校园宿舍管理系统课程设计报告

课程设计报告 学    号   201610411418  /  2016104114122 姓    名   吴帝勇 /谢志良 班    级   16计科4班 题    目   校园宿舍管理系统 授课老师    袁飞 目录 第一章系统概述..............................................................................................................................1 1.

13商软 《软件工程》课程设计

广州商学院 计算机系 系(部) 2015 — 2016 学年第(1)学期 <软件工程>课程设计 一.课程简介及基本要求 软件工程是一门指导软件开发和维护的工程学科,主要内容包括:软件项目管理.结构化分析和设计.面向对象的分析和设计.用户界面设计.软件测试.软件维护.软件配置管理等等. 本课程要求学生完成软件工程课程的学习后,以小组为单位,完成一个小型软件项目的开发.通过上机实践加深学生对软件工程知识的理解和综合应用,熟悉并掌握一般系统软件的设计方法和过程,掌握软件开发的传统方法和最新方法.初步

随便说下课程设计

引子 很快就是学期末尾,一个学年来了,然后又过去.我们的课本呼啦呼啦的又翻了一圈,这也是目前大学的常态了.这几天师弟们也在忙碌着他们的课程设计,帮他们修改了一下.自己也回味起当年事,借此反思,同时也确定当下需要做好的事情. 对于课程设计的态度 以前上学时候,学点知识,看书本总觉得这样应付考试就够了,所谓及格万岁.那个时候根本不知道这门课程到底意味着什么.也是,时下教育总是有着各种怪品味:‘考上大学就轻松了’,‘上学时候不要谈恋爱’不外如是,捎带着学习都成了贬义词.可是事实呢,离开了校园才是真正学

大二第一学期期末课程设计 2015.12.28

<数据结构与算法>课程设计教学任务书 --2015-2016(一)   课程设计周数:2周                                                              一.课程设计的目的 数据结构课程主要是研究非数值计算的程序设计问题中所出现的计算机操作对象以及它们之间的关系和操作的学科.数据结构是介于数学.计算机软件和计算机硬件之间的一门计算机专业的核心课程,它是计算机程序设计.数据库.操作系统.编译原理及人工智能等的重要基础,广泛的应用于信息学

asp.net,java,jsp,安卓Android,苹果ios,php,vb.net,c#免费毕业课程设计源码共享网盘下载

百度网盘下载地址1:  http://pan.baidu.com/s/1o67fybC 百度网盘下载地址2: http://pan.baidu.com/s/1kTxckmF163网盘下载地址:http://home.163disk.com/shuangyulin file://E:\计算机设计参考!!!!!!!!!!!\资料 (4 folders, 0 files, 0 bytes, 641.25 MB in total.) ├─QQ254540457 (0 folders, 49 files,

南理工14级第4组软件课程设计报告

南 京 理 工 大 学 课程设计说明书 作  者: 高明 学 号: 914106840518   刘建平   914106840526   王金   914106840234   王琪栋   914106840235   雷杨   914106840618 学院(系): 计算机科学与技术学院 专  业: 计算机科学与技术 题  目: 离散课程练习测验系统   2016年    10月 目录 一.概述 ················································