c语言,删除链表中指定值的节点

typedefstructelement{intvaleur;structelement*lien;}Element;typedefElement*Liste;Liste... typedef struct element { int valeur; struct element *lien; } Element;typedef Element *Liste;

Liste delister (Liste liste, int v){ Liste tmp1=liste,tmp=NULL; int flag=0; while( tmp1 != NULL ){ if(tmp1->valeur == v){ tmp2=tmp1; tmp1=tmp1->lien; free(tmp2); tmp2=NULL; flag=1; } else tmp1=tmp1->lien; } if(!flag) printf("v isn't in the list"); return liste;}

这个函数哪里不对呢?为什么删除后对应的链表显示值为其他的值~
Liste delister (Liste liste, int v){ Liste tmp1=liste,tmp2=NULL; int flag=0; while( tmp1 != NULL ){ if(tmp1->valeur == v){ tmp2=tmp1; tmp1=tmp1->lien; free(tmp2); tmp2=NULL; flag=1; } else tmp1=tmp1->lien; } if(!flag) printf("v isn't in the list"); return liste;}
展开
 我来答
琴风夜扬
推荐于2017-11-26
知道答主
回答量:49
采纳率:0%
帮助的人:27.2万
展开全部
删除链表中的一个结点,要把前一个结点和后一个结点连起来,你光删除没有连起来。

Liste delister (Liste liste, int v)
{ Liste tmp1=liste,tmp2=NULL;

int flag=0;
tmp2=tmp1;
while( tmp1 != NULL )
{
if(tmp1->valeur == v)
{ if(tmp2!= tmp1)
tmp2->lien=tmp1->lien; /*头结点可直接删除,中间结点删除前要先连接前后的结点*/
free(tmp1);
tmp1=tmp2->lien;
flag=1;
}
else
{ tmp2=tmp1; //记录前一个结点
tmp1=tmp2->lien;
}
}
if(!flag)
printf("v isn't in the list");
return liste;
}
更多追问追答
追问
为什么删除头结点后~链表的头结点的值变成0,但并没有正真删除呢?
追答
删除头结点的话,free(tmp1)太早了,free之前先记下后一结点
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
小幸福1315
2014-01-12
知道答主
回答量:40
采纳率:0%
帮助的人:5.5万
展开全部
好好学习,天天向上
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Supremacy111
2017-12-23
知道答主
回答量:1
采纳率:0%
帮助的人:906
引用琴风夜扬的回答:
删除链表中的一个结点,要把前一个结点和后一个结点连起来,你光删除没有连起来。

Liste delister (Liste liste, int v)
{ Liste tmp1=liste,tmp2=NULL;

int flag=0;
tmp2=tmp1;
while( tmp1 != NULL )
{
if(tmp1->valeur == v)
{ if(tmp2!= tmp1)
tmp2->lien=tmp1->lien; /*头结点可直接删除,中间结点删除前要先连接前后的结点*/
free(tmp1);
tmp1=tmp2->lien;
flag=1;
}
else
{ tmp2=tmp1; //记录前一个结点
tmp1=tmp2->lien;
}
}
if(!flag)
printf("v isn't in the list");
return liste;
}
展开全部
垃圾
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
hustyangju
2014-01-13 · 超过10用户采纳过TA的回答
知道答主
回答量:50
采纳率:0%
帮助的人:29万
展开全部
格式真别扭啊,能不能搞清楚点
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式