程序如下:
#include "iostream.h"
int i;
int j;
int L;
int m;
int n=4;
int B[4];
int D[4];
int G[10]={2,4,0,1,3,0,1,4,0,0};
int S[4][2]={1,1,4,4,7,7,10,10};
void main()
{
for(i=0;i<n;i++)
B[i]=1;
for(int k=0;k<n-1;k++)
{
i=k;j=0;B[i]=0;D[0]=i; //从一新节点开始时的初始化
for(;;m=S[i][1])
{
if(G[m])
{
m=S[i][1]++;
L=G[m];
if(B[L]==0) //该节点可深入
{
if(L==D[0]) //该节点为此次探索的起始节点
{
cout<<L<<"->";
for(int l=j;l>0;l++)
cout<<D[l]<<"->";
}
else
{
B[L]=1; //以L节点出发探索,故封锁该节点
j++;
D[j]=L; //将L节点放入堆栈
i=L; //以L节点出发开始探索
continue;
}
}
else
continue;
}
else
{
S[i][1]=S[i][0];
B[i]=0; //释放i节点 ??
j--;
if(j!=0)
{
i=D[j];
continue;
}
else
break;
}
}
}
}