杨腾泽
yangtengze 1 year ago
parent 4fedf3871b
commit 5d531ce7ec

@ -36,7 +36,7 @@
***********************/ ***********************/
int addbian(MatGrath &G) void addbian(MatGrath &G)
{ int b,c,d; { int b,c,d;
int i,j; int i,j;
printf("请输入你要增加的边的两个点\n"); printf("请输入你要增加的边的两个点\n");
@ -58,7 +58,7 @@
***********************/ ***********************/
int adddian(MatGrath &G) void adddian(MatGrath &G)
{ {
int a; int a;
int b; int b;
@ -100,7 +100,7 @@
***********************/ ***********************/
int modify(MatGrath &G) void modify(MatGrath &G)
{ int a; { int a;
int flag=1; int flag=1;

@ -2,8 +2,13 @@
#include <stdio.h> #include <stdio.h>
#include <string.h> #include <string.h>
#include <stdlib.h> #include <stdlib.h>
#include "type.h"
#include <malloc.h> #include <malloc.h>
#include "type.h"
#include "menu.h"
#include "function.h"
#include "creat.h"
#include "short.h"
int CreatGrath(MatGrath &G); //创造图 int CreatGrath(MatGrath &G); //创造图
int DFS(MatGrath &G,int m); int DFS(MatGrath &G,int m);
@ -11,20 +16,19 @@ void ShortestPath(MatGrath &G,int v,int w); //Dijkstra算法求最短
void Ppath(MatGrath &G,int path[],int w,int v); //前向递归查找路径上的顶点 void Ppath(MatGrath &G,int path[],int w,int v); //前向递归查找路径上的顶点
int Ppath1(MatGrath &G,int path[][MAXV],int v,int w);//前向递归查找路径上的顶点 int Ppath1(MatGrath &G,int path[][MAXV],int v,int w);//前向递归查找路径上的顶点
int ShortestMoney(MatGrath &G,int v,int w); //用floyd算法求最少费用 void ShortestMoney(MatGrath &G,int v,int w); //用floyd算法求最少费用
int menu(void); int menu(void);
int delet(MatGrath &G,int y,int x); int delet(MatGrath &G,int y,int x);
int search(MatGrath &G); //查找某一个城市的信息 int search(MatGrath &G); //查找某一个城市的信息
int addbian(MatGrath &G); //增加城市的边信息 void addbian(MatGrath &G); //增加城市的边信息
int adddian(MatGrath &G); //增加城市的信息 void adddian(MatGrath &G); //增加城市的信息
int modify(MatGrath &G); //修改城市信息 void modify(MatGrath &G); //修改城市信息
int display(MatGrath &G);//输出所有城市信息 int display(MatGrath &G);//输出所有城市信息
void danyuan(MatGrath &G,int d); //求两点之间的最短路径
int danyuan(MatGrath &G,int d); //求两点之间的最短路径
int Ppath2(MatGrath &G,int path[],int i,int v); int Ppath2(MatGrath &G,int path[],int i,int v);
int main() int main()

@ -1,6 +1,8 @@
#include"type.h" #include"type.h"
/*********************** /***********************
floyd floyd
@ -17,7 +19,7 @@ void Ppath(MatGrath &G,int path[],int w,int v) //前向递归查找路径上的
} }
int ShortestPath(MatGrath &G,int v,int w)//求两点之间的最短路径 void ShortestPath(MatGrath &G,int v,int w)//求两点之间的最短路径
{ {
int dist[MAXV],path[MAXV]; int dist[MAXV],path[MAXV];
int s[MAXV]; int s[MAXV];
@ -87,6 +89,8 @@ int Ppath1(MatGrath &G,int path[][MAXV],int v,int w) //前向递归查找
Ppath1(G,path,k,w); //找顶点k的前一个顶点j Ppath1(G,path,k,w); //找顶点k的前一个顶点j
} }
void ShortestMoney(MatGrath &G,int v,int w)//求花费最少的路径 void ShortestMoney(MatGrath &G,int v,int w)//求花费最少的路径
{ {
int A[MAXV][MAXV],path[MAXV][MAXV]; int A[MAXV][MAXV],path[MAXV][MAXV];
@ -138,15 +142,14 @@ int Ppath2(MatGrath &G,int path[],int i,int v) //前向递归查找路径上的
{ {
int k; int k;
k=path[i]; k=path[i];
if (k==v) if (k==v) return k; //找到了起点则返回
return k; //找到了起点则返回
Ppath2(G,path,k,v); //找顶点k的前一个顶点 Ppath2(G,path,k,v); //找顶点k的前一个顶点
printf("%s->",G.vexs[k].sight);//输出顶点k printf("%s->",G.vexs[k].sight);//输出顶点k
} }
int danyuan(MatGrath &G,int v)//求两点之间的最短路径 void danyuan(MatGrath &G,int v)//求两点之间的最短路径
{ {
int dist[MAXV],path[MAXV]; int dist[MAXV],path[MAXV];
int s[MAXV]; int s[MAXV];

@ -1,28 +1,29 @@
#include <stdio.h> #pragma once
#ifndef _TEST_H_
#define _TEST_H_
#define NO 30 #define NO 30
#define MAXV 100 //最大顶点个数 #define MAXV 100 //最大顶点个数
#define INF 32767 //INF表示∞ #define INF 32767 //INF表示∞
typedef struct
struct ArcCell
{ {
int length;//边的长度,既两个地点之的长 int length;//边的长度,既两个地点之的长
int money; int money;
}ArcCell; //定义边的类型 }; //定义边的类型
typedef struct struct VertexType
{ int no; //顶点的编号 { int no; //顶点的编号
char sight[10]; //地点 char sight[10]; //地点
char introduction[100]; //地点的介绍 char introduction[100]; //地点的介绍
}VertexType; //定义顶点的类型 }; //定义顶点的类型
typedef struct struct MatGrath
{ {
int vexnum; //顶点数 int vexnum; //顶点数
int arcnum; //边数 int arcnum; //边数
VertexType vexs[NO]; //在图结构体中调用点的结构体 VertexType vexs[NO]; //在图结构体中调用点的结构体
ArcCell arc[NO][NO]; //在图结构体中调用边的结构体 ArcCell arc[NO][NO]; //在图结构体中调用边的结构体
}MatGrath; };
#endif
Loading…
Cancel
Save