云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > 数据结构课程设计论文(手机通讯录管理系统,最佳旅游路线规划问题,图书租借管理问题)

数据结构课程设计论文(手机通讯录管理系统,最佳旅游路线规划问题,图书租借管理问题)

  • 62 次阅读
  • 3 次下载
  • 2025/12/7 1:20:58

附录

源程序清单 //3.h

#include #include #include

#define INFINITY 100 //最大值

#define MAX_VERTEX_NUM 20 //最大顶点个数

typedef struct{

char city[MAX_VERTEX_NUM][10]; int cout;

}Path; //用于储存路径

typedef struct{

char vexs[MAX_VERTEX_NUM][10]; //顶点信息 int arcs[MAX_VERTEX_NUM][MAX_VERTEX_NUM]; //邻接矩阵 int vexnum,arcnum; //图的当前顶点数和弧数 } MGraph; //采用数组表示法的图的结构体 int LocateVex(MGraph &G,char city[]){ int i;

for(i=0;i

if(strcmp(G.vexs[i],city)==0) return i; if(i==G.vexnum) return -1;

} //定位城市在邻接表中的位置

void print(MGraph G) { int i,j;

printf(\图的邻接矩阵为:\\n\

for(i=0;i

for(j=0;j

printf(\if((j+1)%7==0) printf(\

29

printf(\

} //输出邻接矩阵

void CreateGraph(MGraph &G) {printf(\涉及城市为:\\n\ FILE *fp;

if((fp=fopen(\ } int i,j,k,w;

char city1[10],city2[10];

fscanf(fp,\读入城市的数量以及城市之间路径的总数 for(i=0;i

for(i=0;i

void Dijkstra(MGraph G,char city[]) //用迪杰斯塔拉算法求最短路径 {

int i,v,w,min,v0;

int D[MAX_VERTEX_NUM]={0}; //带权路径长度

int final[MAX_VERTEX_NUM]={0}; //建立一数组,并将所有值置为0,方便后续置换有最短路径的结点

Path path[MAX_VERTEX_NUM]={0}; //path[v]中储存着从v0到v当前求得最短路径上的顶点信息

for(j=0;j

G.arcs[i][j]=INFINITY; for(k=0;k

fscanf(fp,\ //输入一条边依附的顶点和权值 i=LocateVex(G,city1); //确定顶点位置 j=LocateVex(G,city2);

G.arcs[i][j]=G.arcs[j][i]=w; //给弧赋值 printf(\读入信息出错\\n\

30

if((v0=LocateVex(G,city))==-1) {

for(v=0;v

final[v0]=1; //初始化,将主函数输入的城市的标志置为1,即加入集合Q printf(\起始点 终止点 旅行时间 路径 \\n\\n\

//开始主循环,每次求得v0到某个v顶点的最短路径,并输出最短路径

for(i=1;i

min=INFINITY; //当前的最短路径为最大值 for(w=0;w

if(!final[w])

if(D[w]

{v=w;min=D[w];} //如果找到w顶点离v0顶点更近,则更改v和min

D[v]=G.arcs[v0][v]; //从v0到v的路径长度 if(D[v]

strcpy(path[v].city[path[v].cout++],city); strcpy(path[v].city[path[v].cout++],G.vexs[v]); printf(\图中无该点\\n\return;

} //如果显示为-1,则图中无所输入的结点

} //将主函数输入的城市作为起始点

final[v]=1;

printf(\for(w=0;w

for(w=0;w

if(!final[w]&&(min+G.arcs[v][w]

D[w]=min+G.arcs[v][w]; path[w]=path[v];

31

strcpy(path[w].city[path[w].cout++],G.vexs[w]);

}

} }

//3.cpp

#include #include #include #include \void main() {

MGraph G;

char city[10]={'\\0'},ch[10],b; while(1)

{

CreateGraph(G);

print(G);

printf(\读取数据成功\\n\ printf(\请输入起始点:\

scanf(\ strcpy(city,ch); Dijkstra(G,city);

}

} 32

  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
推荐下载
本文作者:...

共分享92篇相关文档

文档简介:

附录 源程序清单 //3.h #include #include #include #define INFINITY 100 //最大值 #define MAX_VERTEX_NUM 20 //最大顶点个数 typedef struct{ char city[MAX_VERTEX_NUM][10]; int cout; }Path; //用于储存路径 typedef struct{ char vexs[MAX_VERTEX_NUM][10]; //顶点信息 int arcs[M

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com