昌吉建設(shè)局網(wǎng)站廣州seo推廣營銷
今天是項(xiàng)目的第二天
昨天一頓迷茫,可惡
今天啥也不關(guān)先來點(diǎn)基本的構(gòu)架
#include<queue>//隊(duì)列
#define FALSE 0
#define TRUE 1
#define ERROR 0
#define OK 1
#define nocnect 999999//未鏈接的距離
#define maxplace 31//景區(qū)的觀景點(diǎn)的最大個(gè)30數(shù)不要0下標(biāo)的
#define SpotName 30//景點(diǎn)名字字符串長度
?前面的定義先,對(duì)于一些功能的時(shí)候(bfs)的時(shí)候要用到隊(duì)列,本來想寫的,但是呀
c++可以直接實(shí)現(xiàn)就沒寫了.
typedef struct {int elem[maxplace];//記錄最短路徑上的頂點(diǎn)序號(hào)int top;
}PathStack;
//順序棧
第一個(gè)對(duì)棧的定義
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];
}
//出棧
棧的各種操作
用棧的主要的
要是有刪除景點(diǎn)的地點(diǎn)個(gè)話可以標(biāo)記
typedef struct palceDrop {char name[50];//名字int number;//編號(hào)char brief_introduction[500];//簡介
}drop;
//進(jìn)去地點(diǎn)的節(jié)點(diǎn)
定義的基本7的節(jié)點(diǎn),目前就寫了,這些后面也許會(huì)添加一些?
typedef struct {palceDrop drops[maxplace];double map[maxplace + 1][maxplace + 1];//鄰接矩陣int Points, edges;//當(dāng)前頂點(diǎn)數(shù)、邊數(shù)
}AMGraph;
//地圖的全部,邊,點(diǎn),節(jié)點(diǎn)數(shù)組,矩陣存邊
這是總地圖 ,包含了節(jié)點(diǎn)數(shù)組
有節(jié)點(diǎn)的個(gè)數(shù),以及邊的條數(shù)(有的景點(diǎn)未必可通的)
圖的遍歷,最短路以及floyed
typedef struct {int p[maxplace + 1];//標(biāo)記該頂點(diǎn)是否已求出最短路徑p[]數(shù)組double Shortest[maxplace + 1];//記錄當(dāng)前到i的最短路徑t[]數(shù)組int PrePath[maxplace + 1];//記錄當(dāng)前最短路徑的前驅(qū)頂點(diǎn)以及next
}Dij_AssistArray;
//djs的輔助數(shù)組
typedef struct {double Shortest[maxplace + 1][maxplace + 1];//記錄當(dāng)前最短路徑int PrePath[maxplace + 1][maxplace+ 1];//記錄當(dāng)前最短路徑的前驅(qū)頂點(diǎn)
}Floyd_AssistArray;
//floyed的輔助數(shù)組
直接定義,不用定義成山散亂的變量了
用的會(huì)更方便
寫這項(xiàng)目,肯定會(huì)用到的
但是djsterl我還沒想好咋用,floyed可以直接用求各個(gè)景點(diǎn)的最近的距離
單源最短路大概會(huì)用在使用者依據(jù)自己當(dāng)前的距離來計(jì)算最短路
void enterData(AMGraph* f) {FILE* fp = fopen("D:\\xunlei\\wyclx\\景區(qū)旅游咨詢系統(tǒng)\\data1.txt", "r");FILE* fd = fopen("D:\\xunlei\\wyclx\\景區(qū)旅游咨詢系統(tǒng)\\data2.txt", "r");if (fp == NULL || fd == NULL) {printf("位置錯(cuò)誤,文件未打開\n");exit(0);}fscanf(fp, "%d", f->Points);//點(diǎn)數(shù)fscanf(fp, "%d", f->edges);//邊數(shù)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;//編號(hào)的初始化for (int p = 1;p <= f->edges;p++) {int x=0;//點(diǎn)1int y=0;//點(diǎn)2double ll=0;//兩個(gè)景點(diǎn)的距離fscanf(fp, "%d", x);fscanf(fp, "%d", y);fscanf(fp, "%lf", ll);f->map[x][y] = ll;f->map[y][x] = ll;//雙向的}//對(duì)景點(diǎn)距離的錄入,完善地圖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);}//對(duì)名字以及簡介的輸入fclose(fp);fclose(fd);
}
//對(duì)數(shù)據(jù)的輸入(暫時(shí)沒有計(jì)算最短路)
文件的操作,但是還只是測試了一部分,還未全測試完
對(duì)于文件的操作還是不熟悉,用的實(shí)在是太少了
void star() {AMGraph* f = (AMGraph*)malloc(sizeof(AMGraph));enterData(f);Floyd_AssistArray* fl = (Floyd_AssistArray*)malloc(sizeof(Floyd_AssistArray));floyedachieve(f,fl);}
//開始入口函數(shù)(未完成)
入口函數(shù) ,暫時(shí)的話還未完成目前只有,定義地圖,以及求廣源的最短路,之后的話會(huì)把菜單以及,其他的東西加入慢慢的補(bǔ)全
題目的話今天打了,測試暫時(shí)講不出個(gè)啥
被薄紗了,玩不了一點(diǎn)!!!
先搞好項(xiàng)目,回頭要把場子找回來
今天
先到這了,撒花謝幕
?
??