这是删除指针中最大值的函数.逻辑错误,elemsn * delmaxval(elemsn *h){elemsn *pm,*qm,*p,*q;\x05pm=p=h;\x05while(p)\x05{\x05\x05q=p;\x05\x05p=p->next;\x05\x05if(pm->datadata)\x05\x05{\x05\x05 pm=p;\x05\x05 qm=q;\x05\x05}\x05}\x05if(pm==h)

来源:学生作业帮助网 编辑:作业帮 时间:2024/07/11 00:55:21
这是删除指针中最大值的函数.逻辑错误,elemsn * delmaxval(elemsn *h){elemsn *pm,*qm,*p,*q;\x05pm=p=h;\x05while(p)\x05{\x05\x05q=p;\x05\x05p=p->next;\x05\x05if(pm->datadata)\x05\x05{\x05\x05 pm=p;\x05\x05 qm=q;\x05\x05}\x05}\x05if(pm==h)
xߏ@R@|^N%!$U pqQ C__/mi' |g%"lݠ4RZ.%{Ib圇)#1_Y*o㛙d`Fd]q.gosqYDz ;L.CVCE2ѹ\9g$UC$PHJeKLDߩuDJ:{Jxs Y 7VnIiB=

这是删除指针中最大值的函数.逻辑错误,elemsn * delmaxval(elemsn *h){elemsn *pm,*qm,*p,*q;\x05pm=p=h;\x05while(p)\x05{\x05\x05q=p;\x05\x05p=p->next;\x05\x05if(pm->datadata)\x05\x05{\x05\x05 pm=p;\x05\x05 qm=q;\x05\x05}\x05}\x05if(pm==h)
这是删除指针中最大值的函数.逻辑错误,
elemsn * delmaxval(elemsn *h)
{
elemsn *pm,*qm,*p,*q;
\x05pm=p=h;
\x05while(p)
\x05{
\x05\x05q=p;
\x05\x05p=p->next;
\x05\x05if(pm->datadata)
\x05\x05{
\x05\x05 pm=p;
\x05\x05 qm=q;
\x05\x05}
\x05}
\x05if(pm==h)
\x05{
\x05\x05h=h->next;
\x05\x05free(pm);
\x05}
\x05else
\x05{
\x05\x05qm->next=pm->next;
\x05\x05free(pm);
\x05\x05
\x05}
\x05return h;
}

这是删除指针中最大值的函数.逻辑错误,elemsn * delmaxval(elemsn *h){elemsn *pm,*qm,*p,*q;\x05pm=p=h;\x05while(p)\x05{\x05\x05q=p;\x05\x05p=p->next;\x05\x05if(pm->datadata)\x05\x05{\x05\x05 pm=p;\x05\x05 qm=q;\x05\x05}\x05}\x05if(pm==h)
循环控制条件只能保证指针【p】非空,但在循环体中,你用到了指针【p→next】,并未加检查就引用了它的数据域【p→next→data】.当【p→next】为空时——链表总是有限的,所以这件事肯定会发生——就出错了.
对于长度为【n】的链表,只需进行【n-1】次比较,所以也只需循环【n-1】次.所以,控制循环次数的应该是【p→next】,而不是【p】.