求最短路径伪代码,用C语言或C++

题目:设计程序求出到所有其它分店平均距离最短的分店。
功能要求及说明:
(1)用一个邻接矩阵存储存在直接通路的两个分店间的距离,并判断是否存在某两个分店不能互相到达。
(2)若任意两个分店都能够互相到达,则求出到其它分店平均距离最短的分店。
(3)连锁分店的数目最少为10个;利用文件提取数据。
(4)采用模块化设计。

Java Native Interface(JNI)是Java语言的本地编程接口,是J2SDK的一部分。在java程序中,我们可以通过JNI实现一些用java语言不便实现的功能。通常有以下几种情况我们需要使用JNI来实现。 标准的java类库没有提供你的应用程序所需要的功能,通常这些功能是平台相关的 你希望使用一些已经有的类库或者应用程序,而他们并非用java语言编写的 程序的某些部分对速度要求比较苛刻,你选择用汇编或者c语言来实现并在java语言中调用他们 下面我们开始编写HelloWorld程序,由于涉及到要编写c/c++代码因此我们会在开发中使用Microsoft VC++工具。编写java代码,我们在硬盘上建立一个hello目录作为我们的工作目录,首先我们需要编写自己的java代码,在java代码中我们会声明native方法,代码非常简单。如下所示 class HelloWorld public static void main(String[] args) } 注意我们的displayHelloWorld()方法的声明,它有一个关键字native,表明这个方法使用java以外的语言实现。方法不包括实现,因为我们要用c/c++语言实现它。注意System.loadLibrary("hello")这句代码,它是在静态初始化块中定义的,系统用来装载hello共享库,这就是我们在后面生成的hello.dll(如果在其他的操作系统可能是其他的形式,比如hello.so) 编译java代码 javac HelloWorld.java 生成HelloWorld.class文件 创建.h文件 这一步中我们要使用javah命令生成.h文件,这个文件要在后面的c/c++代码中用到,我们运行 javah HelloWorld。这样我们可以看到在相同目录下生成了一个HelloWorld.h文件,文件内容如下 在此我们不对他进行太多的解释。 /* DO NOT EDIT THIS FILE - it is machine generated */ #include <jni.h> /* Header for class HelloWorld */ #ifndef _Included_HelloWorld #define _Included_HelloWorld #ifdef __cplusplus extern "C" #endif #endif 编写本地实现代码 在这部分我们要用C/C++语言实现java中定义的方法,我们在VC++中新建一个Project,然后创建一个HelloWorldImp.cpp文件,内容如下 #include <jni.h> #include "HelloWorld.h" #include <stdio.h> JNIEXPORT void JNICALL Java_HelloWorld_displayHelloWorld(JNIEnv *env, jobject obj) 注意我们这里include了 jni.h和刚才得到的HelloWorld.h文件。因此你要在VC++里面设置好,jni.h在JAVA_HOME/include里面。编译通过后再生成hello.dll文件。 运行java程序 把上面生成的hello.dll文件复制到我们的工作目录,这时候我们的目录中包括HelloWorld.java,HelloWorld.class和hello.dll文件。运行java HelloWorld命令,则可在控制台看到Hello world| 的输出了。运行VC++; 文件---新建---选“win32 console application”(控制台程序)---在右方设置好路径并输入工程名---确定 接下来的几个提示框点确定就行了,那是提示是否要用VC++提供的框架之类的 在左边的工作空间中选“FILEVIEW”标签项,点开“+”号,右键点击“SOURCE FILES”,选“添加文件到目录”,此即添加你要建立的C++源程序文件,会提示你没有文件,是否添加,你点是,输入文件名保存就OK了 然后SOURCE FILES下就出现了你刚才建立的*.CPP文件,双击,输入代码. 以下就是
温馨提示:内容为网友见解,仅供参考
第1个回答  2014-01-09
//单源最短路径,dijkstra算法,邻接阵形式,复杂度O(n^2)//求出源s到所有点的最短路经,传入图的顶点数n,(有向)邻接矩阵mat//返回到各点最短距离min[]和路径pre[],pre[i]记录s到i路径上i的父结点,pre[s]=-1//可更改路权类型,但必须非负!#define MAXN 200#define inf 1000000000typedef int elem_t; void dijkstra(int n,elem_t mat[][MAXN],int s,elem_t* min,int* pre){ int v[MAXN],i,j,k; for (i=0;i<n;i++) min[i]=inf,v[i]=0,pre[i]=-1; for (min[s]=0,j=0;j<n;j++){ for (k=-1,i=0;i<n;i++) if (!v[i]&&(k==-1||min[i]<min[k])) k=i; for (v[k]=1,i=0;i<n;i++) if (!v[i]&&min[k]+mat[k][i]<min[i]) min[i]=min[k]+mat[pre[i]=k][i]; }}

关于数据结构的问题,用C语言描述
最短路径问题分为两种:一是求从某一点出发到其余各点的最短路径;二是求图中每一对顶点之间的最短路径。这个问题也具有非常实用的背景特色,一个典型的应该就是旅游景点及旅游路线的选择问题。解决第一个问题用DIJSKTRA算法,解决第二个问题用FLOYD算法。注意区分。第七章 查找在不少数据结构的教材中,是把查找与排...

有没有数据结构(C语言版)的资料
最短路径问题分为两种:一是求从某一点出发到其余各点的最短路径;二是求图中每一对顶点之间的最短路径。这个问题也具有非常实用的背景特色,一个典型的应该就是旅游景点及旅游路线的选择问题。解决第一个问题用DIJSKTRA算法,解决第二个问题用FLOYD算法。注意区分。第七章 查找在不少数据结构的教材中,是把查找与排...

[问题1]中伪代码的时间复杂度为 (7) (用0符号表示)。
【答案】:(7)O(n3)(7)O(n3) 解析:问题1:本问题考查算法流程。第(1)空表示主循环,k是循环控制变量,故第(1)空填k=1to n。第(2)和(3)空根据题意和递归式,可分别得到答案为[*]和计算了任意两个顶点之问的最短路径之后,对每个顶点,开始统计其到所有其他顶点的最短路径之和,因此第...

考研数据结构需要背代码吗
建议先花半个月掌握c语言内容(如果你没有学过c语言),知道代码逻辑和一些算法结构(数据结构基本上都要求c\/c++,一些学校也可以用java,但一般纯c都足够了),再开始数据结构学习。一般先过一遍概念,代码题先放一放,先把基础题目掌握,后续二刷三刷时候再考虑代码题。其次 怎么写代码?如果你完成了上...

数据结构C语言版Floyd算法
您的理解不太对啊,每个矩阵D中记录的都是顶点i到顶点j的当前所经顶点状态下的最短路径

考研数据结构怎么复习?
考研数据结构可以根据以下几点来复习:1、看清华大学出版社 严蔚敏 《数据结构》的教材,C语言版本,这个是最基本的。清华大学计算机考硕士、博士都是考这本书,也是考研官方推荐的教材。数据结构有些是C++语言描述的,有些是JAVA语言描述的,如果你报考的高校没有特别要求,一般就用严的C语言版本的教材。

C语言常用词汇及函数有那些?
常用词汇:1、short:修饰int,短整型数据,可省略被修饰的int。2、long:修饰int,长整型数据,可省略被修饰的int。3、long long:修饰int,超长整型数据,可省略被修饰的int。4、signed:修饰整型数据,有符号数据类型。5、unsigned:修饰整型数据,无符号数据类型。6、restrict:用于限定和约束指针,并表...

相似回答