问题描述
debug的时候发现,firstin和firstout都指向同一个地址~所有的next也是指向同一个地址~为什么?/////////////////////////////////////////////////////////////////////////////foreach(DataRownodeidRowinthis.node1.Tables["NODE"].Rows){nodes[i].nodeid=Convert.ToInt32(nodeidRow["NODEID"]);nodes[i].taken=take.none;foreach(DataRowstartRowinnodeidRow.GetChildRows(nodestartRel)){if(nodes[i].firstout==null)//firstuse{arcp=newarc();p.nodeid=Convert.ToInt32(startRow["ENDID"]);p.length=Convert.ToInt32(startRow["LENGTH"]);p.time=Convert.ToInt32(startRow["TOTALTIME"]);p.next=null;nodes[i].firstout=&p;}else{arc*q=nodes[i].firstout;while(q->next!=null)q=q->next;arcp=newarc();p.nodeid=Convert.ToInt32(startRow["ENDID"]);p.length=Convert.ToInt32(startRow["LENGTH"]);p.time=Convert.ToInt32(startRow["TOTALTIME"]);p.next=null;q->next=&p;}//----------------------------------------------------if(Convert.ToInt16(startRow["DIRECTION"])==2){if(nodes[i].firstin==null)//firstuse{arcp=newarc();p.nodeid=Convert.ToInt32(startRow["ENDID"]);p.length=Convert.ToInt32(startRow["LENGTH"]);p.time=Convert.ToInt32(startRow["TOTALTIME"]);p.next=null;nodes[i].firstin=&p;}else{arc*q=nodes[i].firstin;while(q->next!=null)q=q->next;arcp=newarc();p.nodeid=Convert.ToInt32(startRow["ENDID"]);p.length=Convert.ToInt32(startRow["LENGTH"]);p.time=Convert.ToInt32(startRow["TOTALTIME"]);p.next=null;q->next=&p;}}//direction=2//----------------------------------------------------
解决方案
解决方案二:
不知道i从哪来的,另外也不清楚p.next=null;是想做什么,还有这里if(nodes[i].firstin==null){....}else{arc*q=nodes[i].firstin}上面都判断了firstin=null了,你还在else里写它做什么....一点点看法,你的写法很怪异
解决方案三:
也没看到你的unsafe关键字
解决方案四:
unsafe{....}必须有啊--
解决方案五:
指针,用不来啊..