杨腾泽
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 i,j;
printf("请输入你要增加的边的两个点\n");
@ -58,7 +58,7 @@
***********************/
int adddian(MatGrath &G)
void adddian(MatGrath &G)
{
int a;
int b;
@ -100,7 +100,7 @@
***********************/
int modify(MatGrath &G)
void modify(MatGrath &G)
{ int a;
int flag=1;

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

@ -1,5 +1,7 @@
#include"type.h"
/***********************
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 s[MAXV];
@ -87,6 +89,8 @@ int Ppath1(MatGrath &G,int path[][MAXV],int v,int w) //前向递归查找
Ppath1(G,path,k,w); //找顶点k的前一个顶点j
}
void ShortestMoney(MatGrath &G,int v,int w)//求花费最少的路径
{
int A[MAXV][MAXV],path[MAXV][MAXV];
@ -138,15 +142,14 @@ int Ppath2(MatGrath &G,int path[],int i,int v) //前向递归查找路径上的
{
int k;
k=path[i];
if (k==v)
return k; //找到了起点则返回
if (k==v) return k; //找到了起点则返回
Ppath2(G,path,k,v); //找顶点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 s[MAXV];

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