问题描述:
请问下列程序在删除节点时一定要用pt指针吗
Status PolyDifferential(LinkedPoly &L)
{
LinkedPoly p,q,pt;
q=L;
p=L->next;
while(p!=L){
if(p->data.exp==0){
pt=p;
p=p->next;
q->next=p;
free(pt);
//为什么在删除这个结点时要先用pt指向它?
}
else{
p->data.coef=p->data.coef*p->data.exp;
p->data.exp--;
q=p;
p=p->next;
}
}
return OK;
}
如果在删除结点时用
p->next=q->next;
free(q);
q=p->next;代替
pt=p;
p=p->next;
q->next=p;
free(pt);
有什么不好?
写错了是用q->next=p->next;
free(p);
p=q->next;代替
Status PolyDifferential(LinkedPoly &L)
{
LinkedPoly p,q,pt;
q=L;
p=L->next;
while(p!=L){
if(p->data.exp==0){
pt=p;
p=p->next;
q->next=p;
free(pt);
//为什么在删除这个结点时要先用pt指向它?
}
else{
p->data.coef=p->data.coef*p->data.exp;
p->data.exp--;
q=p;
p=p->next;
}
}
return OK;
}
如果在删除结点时用
p->next=q->next;
free(q);
q=p->next;代替
pt=p;
p=p->next;
q->next=p;
free(pt);
有什么不好?
写错了是用q->next=p->next;
free(p);
p=q->next;代替
问题解答:
我来补答展开全文阅读