数据结构课程设计报告

发布 2022-10-05 02:32:28 阅读 5660

课程设计报告。

数据结构课程设计:dijkstra算法。

2023年 07 月 08日。

目录。dijkstra算法。

对任意图,选择合适的数据结构表示图,在此基础上实现求解最短路径的dijkstra算法。

对所设计的图的数据结构,提供必要的基本功能。

建立图的表示模块;

在建立图之后从单源点开始求最短路径,并显示出最短路径长度及路径途径!

1)本次课设参考用图如下。

2)图的存储方式以邻接矩阵存储无向图,表示如下。

3)达成目的如下,找到v0到v8的最短路径。

1)贪心选择性质。

dijkstra算法是应用贪心算法设计策略的一个典型例子。它所做的贪心选择是从v-s中选择具有特殊路径顶点u,从而确定从源到u的最短路径长度dist[u]。

2)最优子结构性质。

算法中确定的dist[u]确实是当前从源到顶点u的最短特殊路径长度。

3)计算复杂性。

对于一个具有n个顶点和e条边的带权有向图,如果用带权临接矩阵表示这个图,那么dijkstra算法的主循环体需要o(n)时间。这个循环需要执行n-1次,所以完成循环需要o(n*n)。

此次数据结构课程设计,我们学会了。

计算机算法设计与分析》

算法导论》大话数据结构》

#include ""

#include ""

#define maxedge 20

#define maxvex 20

#define init 65535

typedef struct

int vexs[maxvex];

int arc[maxvex][maxvex];

int numvertexes, numedges;

mgraph;

typedef int patharc[maxvex]; 用于存储最短路径下标的数组 */

typedef int shortpathtable[maxvex];/用于存储到各点最短路径的权值和 */

* 构件图 */

void createmgraph(mgraph *g)

int i, j;

/* printf("请输入边数和顶点数:")

g->numedges = 16;

g->numvertexes = 9;

for (i = 0; i < g->numvertexes; i++)初始化图 */

for (i = 0; i < g->numvertexes; i++)初始化图 */

g->arc[0][1] =1;

g->arc[0][2] =5;

g->arc[1][2] =3;

g->arc[1][3] =7;

g->arc[1][4] =5;

g->arc[2][4] =1;

g->arc[2][5] =7;

g->arc[3][4] =2;

g->arc[3][6] =3;

g->arc[4][5] =3;

g->arc[4][6] =6;

g->arc[4][7] =9;

g->arc[5][7] =5;

g->arc[6][7] =2;

g->arc[6][8] =7;

g->arc[7][8] =4;

for (i = 0; i < g->numvertexes; i++)

* dijkstra算法,求有向网g的v0顶点到其余顶点v的最短路径p[v]及带权长度d[v] *

* p[v]的值为前驱顶点下标,d[v]表示v0到v的最短路径长度和 */

void shortestpath_dijkstra(mgraph g, int v0, patharc *p, shortpathtable *d)

int v, w, k, min;

int final[maxvex];/final[w]=1表示求得顶点v0至vw的最短路径 */

for (v = 0; v< v初始化数据 */

(*d)[v0] =0; /v0至v0路径为0 */

final[v0] =1; /v0至v0不需要求路径 */

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

for (v = 1; v< v++)

final[k] =1; /将目前找到的最近的顶点置为1 */

for (w = 0; w< w++)修正当前最短路径及距离 */

int main(void)

int i, j, v0;

mgraph g;

patharc p;

shortpathtable d; /求某点到其余各点的最短路径 */

v0 = 0;

createmgraph(&g);

shortestpath_dijkstra(g, v0, &p, &d);

printf("最短路径倒序如下:");

for (i = 1; i< +i)

printf("");

printf("源点到各顶点的最短路径长度为:");

for (i = 1; i< +i)

printf("v%d - v%d : d ", d[i]);

return 0;

数据结构课程设计报告

东莞理工学院城市学院。题目 二叉排序树 专业 计算机科学与技术 本 年级 2010级计算机科学与技术专业 1 班。个人姓名 何振江。指导教师 张娟老师 时间 2010至2011第二学期第18周 地点 实验楼615机房 东莞理工学院城市学院计算机与信息科学系制。2011年 6月。实习报告的内容。一 问...

数据结构课程设计报告

设计一个校园导游程序,为来访的客人提供信息查询服务。1 设计学校的校园平面图。选取若干个有代表性的景点抽象成一个无向带权图 无向网 以图中顶点表示校内各景点,边上的权值表示两景点之间的距离。2 存放景点代号 名称 简介等信息供用户查询。3 为来访客人提供图中任意景点相关信息的查询。4 为来访客人提供...

数据结构课程设计报告

河北科技大学。课程设计报告。学生姓名学号。专业班级。课程名称数据结构。学年学期 2 012 2 013学年第 2 学期指导教师 黄春茹。2 0 13年 6 月。课程设计成绩评定表。一 数据结构课程设计目标。二 问题描述。三 需求分析。四 概要设计。五 详细设计。六 软件说明书 给出软件如何使用,使用...