打印从源点到任何一个顶点最短路径所经过的顶点
思路
主要用栈去实现
代码
#include<stdio.h>
#include<iostream>
#include<malloc.h>
using namespace std;
#define maxsize 100
//用栈打印path[]数组中保存的树即从源点到任何一个顶点最短路径所经过的所有顶点
void print(int path[], int a)
{
int stack[maxsize], top = -1;
while (path[a] != -1)
{
stack[++top] = a;
a = path[a];
}
stack[++top] = a;
while (top != -1)
{
printf("%d ", stack[top--]);
}
printf("\n");
}
int main()
{
int path[] = { -1, 0, 1, 0, 5, 2, 4 };
//打印到结点4所经过的顶点
print(path, 4);
return 0;
}