> 文章列表 > 项目前期1.0

项目前期1.0

项目前期1.0

今天是项目的第二天

昨天一顿迷茫,可恶

今天啥也不关先来点基本的构架

#include<queue>//队列
#define FALSE 0
#define TRUE 1
#define ERROR 0
#define OK 1
#define nocnect 999999//未链接的距离
#define maxplace 31//景区的观景点的最大个30数不要0下标的
#define SpotName 30//景点名字字符串长度

 前面的定义先,对于一些功能的时候(bfs)的时候要用到队列,本来想写的,但是呀

c++可以直接实现就没写了.

typedef struct {int elem[maxplace];//记录最短路径上的顶点序号int top;
}PathStack;
//顺序栈

第一个对栈的定义

int stackStar(PathStack* S) {S->top = 0;return OK;
}
//栈的初始化int StackIsEmpty(PathStack S) {if (S.top == 0) {return TRUE;}return FALSE;
}
//检查栈是否为空int Push(PathStack* S, int e) {if (S->top == maxplace) {return ERROR;}S->elem[S->top] = e;S->top++;return OK;
}
//入栈int Pop(PathStack* S, int* e) {if (S->top == 0) {return ERROR;}S->top--;*e = S->elem[S->top];
}
//出栈

栈的各种操作

用栈的主要的

要是有删除景点的地点个话可以标记

typedef struct palceDrop {char name[50];//名字int number;//编号char brief_introduction[500];//简介
}drop;
//进去地点的节点

定义的基本7的节点,目前就写了,这些后面也许会添加一些 

typedef struct {palceDrop  drops[maxplace];double map[maxplace + 1][maxplace + 1];//邻接矩阵int Points, edges;//当前顶点数、边数
}AMGraph;
//地图的全部,边,点,节点数组,矩阵存边

这是总地图 ,包含了节点数组

有节点的个数,以及边的条数(有的景点未必可通的)
图的遍历,最短路以及floyed

typedef struct {int p[maxplace + 1];//标记该顶点是否已求出最短路径p[]数组double Shortest[maxplace + 1];//记录当前到i的最短路径t[]数组int PrePath[maxplace + 1];//记录当前最短路径的前驱顶点以及next
}Dij_AssistArray;
//djs的辅助数组
typedef struct {double Shortest[maxplace + 1][maxplace + 1];//记录当前最短路径int PrePath[maxplace + 1][maxplace+ 1];//记录当前最短路径的前驱顶点
}Floyd_AssistArray;
//floyed的辅助数组

直接定义,不用定义成山散乱的变量了

用的会更方便

写这项目,肯定会用到的

但是djsterl我还没想好咋用,floyed可以直接用求各个景点的最近的距离

单源最短路大概会用在使用者依据自己当前的距离来计算最短路

void enterData(AMGraph* f) {FILE* fp = fopen("D:\\\\xunlei\\\\wyclx\\\\景区旅游咨询系统\\\\data1.txt", "r");FILE* fd = fopen("D:\\\\xunlei\\\\wyclx\\\\景区旅游咨询系统\\\\data2.txt", "r");if (fp == NULL || fd == NULL) {printf("位置错误,文件未打开\\n");exit(0);}fscanf(fp, "%d", f->Points);//点数fscanf(fp, "%d", f->edges);//边数for (int h = 1; h <= f->Points;h++)for (int j = 1;j <= f->Points;j++)f->map[h][j] = nocnect;//初始化for (int h = 1;h <= f->Points;h++)f->drops[h].number = h;//编号的初始化for (int p = 1;p <= f->edges;p++) {int x=0;//点1int y=0;//点2double ll=0;//两个景点的距离fscanf(fp, "%d", x);fscanf(fp, "%d", y);fscanf(fp, "%lf", ll);f->map[x][y] = ll;f->map[y][x] = ll;//双向的}//对景点距离的录入,完善地图for (int h = 1;h <= f->Points;h++) {fscanf(fd, "%s", f->drops[h].name);char a[200];while(fscanf(fd, "%s", a) != 0)strcpy(f->drops[h].brief_introduction, a);}//对名字以及简介的输入fclose(fp);fclose(fd);
}
//对数据的输入(暂时没有计算最短路)

文件的操作,但是还只是测试了一部分,还未全测试完

对于文件的操作还是不熟悉,用的实在是太少了

void star() {AMGraph* f = (AMGraph*)malloc(sizeof(AMGraph));enterData(f);Floyd_AssistArray* fl = (Floyd_AssistArray*)malloc(sizeof(Floyd_AssistArray));floyedachieve(f,fl);}
//开始入口函数(未完成)

入口函数 ,暂时的话还未完成目前只有,定义地图,以及求广源的最短路,之后的话会把菜单以及,其他的东西加入慢慢的补全

题目的话今天打了,测试暂时讲不出个啥

被薄纱了,玩不了一点!!!

先搞好项目,回头要把场子找回来

今天

先到这了,撒花谢幕