单向链表中如何删除值为偶数或者奇数的节点呢
1.首先我们得创建一个链表在主调中调用前面的Creatlink函数
2.创建函数Elemsn *delet(Elemsn *head)进行删除操作,最后在主调中调用
3.这里我只写出delet函数,下面的函数是删除偶数节点的代码
Elemsn *dele(Elemsn *head)//将链表的头传给函数
{
Elemsn *p;
Elemsn *q;
while(!(head->data%2))//判断头结点所存放的值是不是偶数,若是则删除,将头结点后移
{
p=head->next;//用p保存头结点指针域的地址
free(head);//释放头结点即为删除这个节点
head=p;//将头结点后移
}
q=head;//让q指向头结点
for(p=head->next;p!=NULL;)//进入循环,当指针p指向空时,跳出循环
{
if(p->data%2==0)//判断p所指节点存放的值是否为偶数,若是则进入if语句
{
q->next=p->next;//让q的指针域存放p指针域所存放的值,也就是让q跳过了p所指的节点。
free(p);//释放p所指的节点
p=q->next;//p指向q所指的下一个节点
}
else//若p所指的节点存放的不是偶数,指针p,q均后移
{
q=p;//
p=p->next;
}
}
return head;//返回头结点
}
网友评论