资源简介
用gtk+2.0开发的一个小程序,用来显示最短路径,前台界面用gtk+2.0开发,后台用flody算法,支持手工画图,动态修改图的结构,包括修改顶点、边长等等,可以在界面上显示任意两点之间的最短路径,可以在图上画出来,用不同的颜色显示。程序用eclipse开发,可以在linux(fedora13)下运行,也可以到window下编译运行。
代码片段和文件信息
/*
* floyd.c
*
* Created on: 2011-3-4
* Author: root
*/
#include “graph.h“
#include
#include
#include
#include
#include
extern struct graph_struct *my_graph;
unsigned int malloc_error()
{
printf(“malloc error:not enough_memory\n“);
//后期改进:弹出对话框,在界面提示。
return 1;
}
int init_array_double(double ***array unsigned int base)
{
unsigned int i = 0;
unsigned int j = 0;
//申请空间,构造动态二维数组
*array = (double **) malloc(sizeof(double*) * base);
if (*array)
{
memset(*array 0 sizeof(double *) * base);
for (i = 0; i < base; ++i)
{
(*array)[i] = (double *) malloc(sizeof(double) * base);
if ((*array)[i])
{
memset((*array)[i] 0 sizeof(double) * base);
} else
{
printf(“malloc error:not enough memory\n“);
return 1;
}
}
} else
{
printf(“malloc error:not enough memory\n“);
return 1;
}
for (i = 0; i < base; ++i)
for (j = 0; j < base; ++j)
if (i == j)
(*array)[i][j] = 0;
else
(*array)[i][j] = DBL_MAX;
return 0;
}
int init_array_int(unsigned int ***array unsigned int base)
{
unsigned int i = 0;
unsigned int j = 0;
//申请空间,构造动态二维数组
*array = (unsigned int **) malloc(sizeof(unsigned int*) * base);
if (*array)
{
memset(*array 0 sizeof(unsigned int *) * base);
for (i = 0; i < base; ++i)
{
(*array)[i] = (unsigned int *) malloc(sizeof(unsigned int) * base);
if ((*array)[i])
{
memset((*array)[i] 0 sizeof(unsigned int) * base);
} else
{
printf(“malloc error:not enough memory\n“);
return 1;
}
}
} else
{
printf(“malloc error:not enough memory\n“);
return 1;
}
for (i = 0; i < base; ++i)
for (j = 0; j < base; ++j)
{
(*array)[i][j] = INT_MAX;
}
return 0;
}
unsigned int init_graph()
{
my_graph = (struct graph_struct *) malloc(sizeof(struct graph_struct));
if (!my_graph)
return malloc_error();
memset(my_graph 0 sizeof(struct graph_struct));
my_graph->point_cur_num = 0;
my_graph->side_cur_num = 0;
my_graph->point_max_num = 10;/*初始10个顶点*/
my_graph->side_max_num = my_graph->point_max_num * (my_graph->point_max_num + 1) / 2;
my_graph->graph_point = (struct graph_point *) malloc(sizeof(struct graph_point) * my_graph->point_max_num);
if (!my_graph->graph_point)
return malloc_error();
memset(my_graph->graph_point 0 sizeof(struct graph_point) * my_graph->point_max_num);
my_graph->graph_side = (struct graph_side *) malloc(sizeof(struct graph_side) * my_graph->side_max_num);
if (!my_graph->graph_side)
return malloc_error();
memset(my_graph->graph_side 0 sizeof(struct graph_side) * my_graph->side_max_num);
return 0;
}
/**
* 函数名称: flody
* 函数参数: graph图的邻接矩阵,min_path 最短路径长度,n顶点个数,path路径矩阵
* 函数功能: 求解任意顶点间的最短路径长度和路径经过的顶点
* 返回值: 无
* */
void flody(double **graph double **min_path unsigned n unsigned int **path)
{
unsigned int i = 0 j = 0 k = 0;
for (i = 0; i < n; ++i)
for (j = 0; j < n; ++j)
{
min_path[i][j] = graph[i][j];
path[i][j] = 0;
}
for (k = 0;
相关资源
- 最短路径问题
- 基于GTK+的单词数值计算器
- 用gtk开发的电子时钟
- 求图中两点间的所有路径包括最短路
- gtk的输入框添加图标的
- 用弗洛伊德算法实现求最短路径的交
- linux下实现即时通讯的毕业论文
- 交通最短路径
- minidwep-gtk安装包
- 华中科技大学操作系统课程设计——
- 数据结构课程设计 迷宫探索 要找出
- 设计、实现一个全国大城市间的交通
- 绝版 cdlinux 0.9.7.1 集成 minidwep 40420 无
- 多段图最短路径算法课实验
- 狄杰斯特拉最短路径算法实现
- 遗传算法——最短路径问题
- Linux Socket 基于GTK+聊天软件
- 电商面试常问的一个算法实现,即最
- linux平台基于socket图形化网络聊天
- 交通咨询系统设计最短路径问题
- GTK编程设计音乐播放器
- 最短路径算法Dijkstra源代码
- Linux综合实验GTK+单词计算器
- 无线传感器网络路由算法,采用最短
- 水滴修改版,可用于kali 2019.2版本
- 粒子群算法 实现 最短路径
- A_StarSearch.rar
- 图结构实验 数据结构 最短路径
- 最短路径Dijkstra
- GTK多线程聊天工具
评论
共有 条评论