一个奇怪的问题

时间:2022-08-23 00:28:59
void main()
{
         Queue c;
int a[5]={0,1,2,3,4};
int m=5,n=5;
         ALGraph s(a,m,n);
s.BFSTraverse(0,c);
cout<<endl;
         s.DFSTraverse(0); 
cout<<endl;
}
当我把上面的两个函数的调用交换位置时,其输出结果不同,也就是说我把s.BFSTraverse(0,c);和 s.DFSTraverse(0); 交换位置后输出的结果并不是两个函数的结果交换了,而是输出完全不同的结果。
还有各位能不能帮我看看下面的代码有什么问题吗??
void ALGraph::BFSTraverse(int v,Queue c)
{

int *visited=new int [];
         cout<<adjlist[v].vertex;
visited[v]=1;
c.InQueue(v);
         while(c.empty()!=1)
{
v=c.OutQueue();
         ArcNode *p=adjlist[v].firstedge;
while(p!=NULL)
{
int j=p->adjvex;
if(visited[j]==0)
{
cout<<adjlist[j].vertex;
visited[j]=1;
                  c.InQueue(j);
}
p=p->next;
}

}

}

6 个解决方案

#1


图的深度优先和广度优先遍历
就结构来说,只要图的存储结构确定了,那么每次的遍历结果应该是一样的,看看你的2个程序里,是不是更改了图的存储结构

#2


我就把那个调用次序改一下结果就不同了。这应该没问题啊????

#3


帮忙顶起~

#4


数据结构书上查

#5


uo

#6


问题以解决,我自己认为可能是作用域的问题,我的递归函数每次调用都会重新分配内存,应该把该内存设为全局的。且在第二个函数重新分配内存空间。谢谢 ,结贴!!!!!!

#1


图的深度优先和广度优先遍历
就结构来说,只要图的存储结构确定了,那么每次的遍历结果应该是一样的,看看你的2个程序里,是不是更改了图的存储结构

#2


我就把那个调用次序改一下结果就不同了。这应该没问题啊????

#3


帮忙顶起~

#4


数据结构书上查

#5


uo

#6


问题以解决,我自己认为可能是作用域的问题,我的递归函数每次调用都会重新分配内存,应该把该内存设为全局的。且在第二个函数重新分配内存空间。谢谢 ,结贴!!!!!!