2018-07-07

2018-07-07  本文已影响0人  nicetomeetutoo

单向链表中如何删除值为偶数或者奇数的节点呢

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;//返回头结点

}

上一篇下一篇

猜你喜欢

热点阅读