資源簡介
全國交通咨詢模擬c語言版。。。。。。。全國交通咨詢模擬c語言版全國交通咨詢模擬c語言版全國交通咨詢模擬c語言版全國交通咨詢模擬c語言版。

代碼片段和文件信息
#include??
#include??
#define?MAX?10?//最大頂點數?
#define?EDGESMAX?999999?//邊最大權值?
/**************結構體*****************/?
struct?city?//城市結構體,包括城市名字以及城市在圖中的編號?
{?
int?Number;?
char?Name[10];?
};?
struct?stone?//圖的存儲結構?
{?
int?vexs[MAX]ne;?//頂點表頂點數,邊數?
int?distancedge[MAX][MAX]timedge[MAX][MAX]costedge[MAX][MAX];?//鄰接矩陣分別是距離時間費用?
};?
/************函數聲明******************/?
void?PRINT(struct?stone?*g);?
//全局變量被CreatGraph()PRINT()等函數調用..........................?
struct?city?Cit[MAX];?
/**********版權展示原創程序[軟件都會有版權信息吧嘿嘿]************/?
void?CopyRight()?
{?
printf(“o(∩_∩)o...o(∩_∩)o...o(∩_∩)o...o(∩_∩)o...\n\n“);?
printf(“\t歡迎使用STONE[磐石]交通咨詢系統\n“);?
printf(“\n\t指導老師:夏銘?張曙光?程序編寫:李樂\n“);?
printf(“\n\t絕對原創版權所有拒絕拷貝抄襲..\n“);?
printf(“\n?o(∩_∩)o...o(∩_∩)o...o(∩_∩)o...o(∩_∩)o...“);?
system(“PAUSE“);?
}?
//根據城市名字取其序號序號取其名字對于一個大型的城市網絡圖來說必須輸入名稱對應序號而不可能讓用戶輸入序號?
int?GetCityNum(char?cityname[])?//城市?名字->序號?
{?
for(int?i=0;i {?
if(strcmp(Cit[i].Namecityname)==0)?
return(Cit[i].Number);?
}?
printf(“您輸入的城市名稱\“%s\“有錯誤\n“cityname);?
return?-1;?
}?
char?*GetCityName(int?i)//城市?序號->名字?
{?
if(i<0||i>MAX)?
{?
printf(“參數越界,發生錯誤了!“);?
exit(-1);?//0正常退出其他為非正常退出此處無所謂?
}?
return?Cit[i].Name;?
}?
/************[1]鄰接矩陣構建有向圖*************************/?
void?CreatGraph(struct?stone?*g)?
{?
FILE?*fp;?
fp=fopen(“c:\\stone.txt““r“);?
if(fp==NULL)?
printf(“無法打開交通網絡圖文件!\n“);?
else?
{?
fscanf(fp“%d?%d“&(g->n)&(g->e));?//頂點數邊數?
int?i=0j=0;?
for(i=0;i<(g->n);i++)?//城市頂點,序號和名字?
{?
fscanf(fp“%d“&(g->vexs[i]));?//printf(“%d“(g->vexs[i]));?
Cit[i].Number=g->vexs[i];?//printf(“%d“(Cit[i].Number));?
fscanf(fp“%s“Cit[i].Name);?//?printf(“%s“Cit[i].Name);?
}?
for(i=0;i<(g->n);i++)?//初始化鄰接矩陣?
for(j=0;j<(g->n);j++)?
g->distancedge[i][j]=g->timedge[i][j]=g->costedge[i][j]=0;?
for(i=0;i<(g->n);i++)?//有權圖的鄰接矩陣讀取是否為有向圖根據STONE.TXT文件內容而定?
for(j=0;j<(g->n);j++)?//EDGESMAX=999999距離權值矩陣?
fscanf(fp“%d“&(g->distancedge[i][j]));?
for(i=0;i<(g->n);i++)?//time權值矩陣?
for(j=0;j<(g->n);j++)?
fscanf(fp“%d“&(g->timedge[i][j]));?
for(i=0;i<(g->n);i++)?//cost權值矩陣?
for(j=0;j<(g->n);j++)?
fscanf(fp“%d“&(g->costedge[i][j]));?
}?
fclose(fp);?
}?
/*******************[2]Dijkstra[一個頂點到其余頂點]**********************/?
void?Dijkstra(int?nint?edges[][MAX]int?v0int?dist[]int?path[])?//頂點書邊表矩陣最短路徑矩陣路徑上一節點矩陣?
{?
int?ijminu;?
int?*s=(int?*)malloc(sizeof(int)*n);?
for(i=0;i {?
dist[i]=edges[v0][i];?
s[i]=0;?
if(i!=v0&&dist[i] else?path[i]=-1;?
}?
s[v0]=1;?
for(i=1;i {?
min=EDGESMAX;?//printf(“%d?“min);?
for(j=0;j<=n;j++)?
if(s[j]==0&&dist[j] {?
u=j;?
min=dist[j];?
}?
if(min==EDGESMAX)?return;?
s[u]=1;?
for(j=0;j {?
if(s[j]==0&&edges[u][j] {?
dist[j]=dist[u]+edges[u][j];?
path[j]=u;?
}?
}?
}?
}?
/***********************[3]Floyd[每兩頂
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件??????13355??2009-12-14?19:27??全國交通咨詢模擬.cpp
-----------?---------??----------?-----??----
????????????????13355????????????????????1
評論
共有 條評論