问题描述:
设图中的各边的权值均为相等,以邻接表为存储结构,求顶点v到顶点u的最短路径长度,要求输出路径上的每一个顶点。
算法思路:采用广度优先遍历算法,当访问到的当前顶点为所指定的终点时,结束遍历,利用队列中每中元素的pre值寻找起点到终点的最短路径(当前顶点的pre值即为链接以当前顶点为终点的弧的表头结点序号)。
算法实现:
#include <stdio.h>
#include <malloc.h>
#include <stdlib.h>
#define MAXSIZE 100
typedef char InfoType;
typedef char vertex;
typedef struct ANode
{
int adjvex;
struct ANode *nextarc;
InfoType Info;
}ArcNode;
typedef struct
{
vertex data;
ArcNode *fistarc;
}VertexNode;
typedef struct
{
VertexNode adjlist[MAXSIZE];
int n,e;
}ALGraph;
struct QUEUE
{
int _vertex;
int pre;
}queue[MAXSIZE];
int front=-1,rear=-1;
void _print(int);
void CreateALGraph(ALGraph*&,int**,int);
void shortest_