数据结构
void DFS_PostOrder()
{
top = -1;//栈顶指针初始化
vertexNum=n;//顶点个数
for(i=0;i<vertexNum;i++)//遍历所有的顶点,以防遗漏
{
if(visited[i]==0)//增设一数组visited记录遍历过的定点下标
{
//如果等于零,说明该顶点没被遍历
// 把开始遍历的顶点输出,标记,栈顶指针上移
cout<<adjust[i].vertex<<endl;
visited[i]=1;
stack[++top]=i;
//直到栈为空,退出循环
while(top!=-1)
{
//取栈顶元素,开始遍历
p=adjust[stack[top]].firstedge;
while(p!=NULL)
{
t=p.adjvex;
if(visited[t]!=0)
{
cout<<adjlist[t].vertex<<endl;
visited[t]=1;
stack[++top];
break;
}
else
{
p=p->next;
}
}
//p若为空,则说明该顶点深度到底,开始弹栈,或者说是栈顶指针下移
if(p==NULL)
{
top--;
}
}
}
}
}