为什么ver[0].flag = j;后,栈中所有的ver[0].flag全被修改了?请指教for(j= 1;j < verNum;j ++){//第一步,两个顶点的情况
if(length[begin][j] < sum){
    v[j].w = v[0].w + length[begin][j];
System.out.print("     " + v[j].w + v[j].name);
Vertex ver[] = new Vertex[verNum + 1];
ver[0] = v[0];
ver[1] = v[j];System.out.println("    ver[" + j + "]=" + ver[1].name);;
ver[0].flag = j;
sta.push(ver);

解决方案 »

  1.   

    数组是对象。
    Vertex ver[] = new Vertex[verNum + 1]; 
    这句代码共执行 三步:
    //1.Vertex ver[] 在栈中申明的一个变量ver,类型是 Vertex[];
    //2.在堆中创建一个对象 new Vertex[verNum + 1];
    //3. “=”意思是: 将栈中的变量 ver 引用指向堆中的对象 new Vertex[verNum + 1];所以:在 ver[0].flag = j;执行后,即改变了 内存堆中的对象 new Vertex[verNum + 1]的第一个元素(ver[0])的属性;
      

  2.   

    在 ver[0].flag = j;执行后,改变了内存堆中的对象 new Vertex[verNum + 1]的第一个元素(ver[0])的属性;