void CProbabilityDlg::OnInput() //建立链表
{
....
tempNod=pNod=(struct sampleStruc *)malloc(LEN);
tempNod->sampVal=m_Sample;
tempNod->sampProb=m_SampProb;
if(n_Nod==1) headNod=tempNod;
else pNod->next=tempNod; pNod=tempNod;
} void CProbabilityDlg::OnResult() //遍历链表
{
pNod->next=NULL;
.....
if(headNod!=NULL)
do
{
.........
tempVar+=tempVar1*tempVar1*tempN->sampProb;
tempN=tempN->next; // 这里访问headNod->next出错 ???
}while(tempN!=NULL);
......
}插入几组数据后,为什么headNod->next域不能访问? 比如插入3组数据(1,2),(3,4),(5,6)。
哪位热心人能否留下邮箱,我把程序发你您帮我查查!
{
....
tempNod=pNod=(struct sampleStruc *)malloc(LEN);
tempNod->sampVal=m_Sample;
tempNod->sampProb=m_SampProb;
if(n_Nod==1) headNod=tempNod;
else pNod->next=tempNod; pNod=tempNod;
} void CProbabilityDlg::OnResult() //遍历链表
{
pNod->next=NULL;
.....
if(headNod!=NULL)
do
{
.........
tempVar+=tempVar1*tempVar1*tempN->sampProb;
tempN=tempN->next; // 这里访问headNod->next出错 ???
}while(tempN!=NULL);
......
}插入几组数据后,为什么headNod->next域不能访问? 比如插入3组数据(1,2),(3,4),(5,6)。
哪位热心人能否留下邮箱,我把程序发你您帮我查查!
{
// TODO: Add your control notification handler code here
CString strSamp,strSampProb, strtemp;
struct sampleStruc *tempNod; UpdateData(true); n_Nod++;
tempNod=pNod=(struct sampleStruc *)malloc(LEN);
tempNod->sampVal=m_Sample;
tempNod->sampProb=m_SampProb; if(n_Nod==1) headNod=tempNod;
else pNod->next=tempNod;
pNod=tempNod;
sumProb+=m_SampProb; strSamp.Format("%.3f",m_Sample);
strSampProb.Format("%.3f",m_SampProb);
strtemp=strSamp+" "+strSampProb; m_List.AddString(strtemp);
m_SumSampProb=sumProb; m_tempExcept+=m_Sample*m_SampProb;
UpdateData(false);
}void CProbabilityDlg::OnResult() ////点击"计算"按钮时可以计算,遍历链表
{
// TODO: Add your control notification handler code here
pNod->next=NULL; struct sampleStruc *tempN;
float tempVar=0;
float tempVar1;
tempN=headNod; if(headNod!=NULL)
do
{
tempVar1=0;
tempVar1=(tempN->sampVal - m_tempExcept);
tempVar+=tempVar1*tempVar1*tempN->sampProb;
tempN=tempN->next;
}while(tempN!=NULL); m_SampDelta=float(sqrt(tempVar));
m_Exception=m_tempExcept; UpdateData(true);
}
// tempNod,pNod均指向最后一个节点,并形成自循环
// headNod 指向第一个节点,其后为非法节点
// 错误原因为本来pNod用来保存原最后一个节点,现在每次都赋新值,旧址没有保存!!!2)tempNod->next=NULL; //如果没有的话,将导致 tempN=tempN-> next;
// 出错的原因是新节点的后面都要=NULL;
//另外NEW新节点要赋NULL3)// UpdateData(true); // 汗颜的错误