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;
}
}
}
好吧,经过我自己不懈的调试,修改,终于成功了 展开
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;
}
}
}
好吧,经过我自己不懈的调试,修改,终于成功了 展开
1个回答
展开全部
q=q->next; 这个好像错了,因为p和q指向了一个节点。
更多追问追答
追问
追答
q->next=p->next;
p=q;
p=p->next;
这几行代码的意思是
p = p->next;
q->next = p;
就是说,跳过当前所指的节点,并将前一节点的next值指向下一个节点。
你这个代码,p指向的是当前节点,q指向的是上一个节点,判断条件应该是p == NULL而不是q
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询