C语言链表 求大佬看看哪儿出问题了,我删除第一个值没问题,删除第二第三以后的就乱码了,如图四五六

 我来答
三天打鱼N
2019-02-12 · TA获得超过1540个赞
知道大有可为答主
回答量:2032
采纳率:74%
帮助的人:601万
展开全部
删除应该是
节点 *p=首节点
循环(p->下一个!=null)
{
如果(p->下一个.值==数据){
节点 *q=p->下一个
p->下一个=q->下一个
删除 q
}否则{p=p->下一个}
}
更多追问追答
追问
void deletenode(Q *head,int data)
{
Q *p=head,*q=head->next;
while(q!=NULL)
{
if(q->score==data)
{
p->next=q->next;
free(q);
}
else
{
q=p->next;
p=q;

}

}
}
这样呢??这个还是有问题
追答
void deletenode(Q *head,int data)
{
Q *p=head,*q=head->next;
while(q!=NULL)
{
if(q->score==data)
{
p->next=q->next;
free(q);
q=p->next;
cylz0703
2019-02-12 · TA获得超过3.4万个赞
知道大有可为答主
回答量:1.8万
采纳率:83%
帮助的人:4465万
展开全部

以上代码中58行至64行应改为:

if(q->score==data){
p->next=q->next;
free(q);
q=p->next;
}else{
p=q;
q=p->next;
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式