C语言链表问题,要求删除链表里某个范围值内的节点

这是我写的函数,L是头指针voidDeletelist(Lnode*L,intmin,intmax){Lnode*p,*q;q=L;p=L->next;for(;p!=N... 这是我写的函数,L是头指针
void Deletelist(Lnode *L,int min,int max)
{
Lnode *p,*q;
q=L;
p=L->next;
for(;p!=NULL;)
{
if(p->data>min&&p->data<max)
{
q->next=p->next;
p=q;
p=p->next;
}
else
{
q=p;
p=p->next;
q=q->next;
}
}
}
好吧,经过我自己不懈的调试,修改,终于成功了
展开
 我来答
遊赤壁
2014-04-19 · TA获得超过174个赞
知道答主
回答量:19
采纳率:0%
帮助的人:26.8万
展开全部
q=q->next; 这个好像错了,因为p和q指向了一个节点。
更多追问追答
追问

我不知道,如果就用目前的变量来判断数值是否在范围内时,指针该怎么改变

 

for(;p!=NULL;p=p->next,q=q->next)
  { 
   if(p->data>=min&&p->data<=max)
   {
    if(q==NULL)
  return;
     q->next=p->next;
     p=p->next;
   }
  }

如果这么改的话

怎么回事

追答
q->next=p->next;    
p=q;
p=p->next;
这几行代码的意思是
p = p->next;
q->next = p;
就是说,跳过当前所指的节点,并将前一节点的next值指向下一个节点。
你这个代码,p指向的是当前节点,q指向的是上一个节点,判断条件应该是p == NULL而不是q
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式