6 您所在的位置:网站首页 删除单链表偶数节点 6

6

2024-06-02 21:50| 来源: 网络整理| 查看: 265

已知单链表的结点结构定义如下:

typedef struct _NODE_ { int data; struct _NODE_ *next; } NODE;

说明:data 为数据域。next 为指针域,指示后继结点。

请编写函数,删除带头结点的单链表中所有数据元素为奇数的结点。

函数原型

void RemoveOdd(NODE *head);

说明:参数 head 为单链表的头指针。函数将删除单链表中所有值为奇数的数据元素。

裁判程序

int main() { NODE *h; Create(&h); Input(h); RemoveOdd(h); Output(h); putchar('\n'); Destroy(&h); return 0; }

说明:Create 函数用于创建链表,Destroy 函数用于销毁链表。Input 函数用于输入链表:首先输入结点数,然后输入这些数据元素。Output 函数用于输出单链表,数据元素之间以空格间隔。

输入样例

5 28 47 79 52 36

输出样例

28 52 36

要求:时间复杂度为 O(n),空间复杂度为 O(1)。

函数:

void RemoveOdd(NODE *head){ NODE *P,*L; P=(NODE*)(malloc(sizeof(NODE))); L=(NODE*)(malloc(sizeof(NODE))); P=head;//创建P,L两个链表指针 L=head; for(;P!=NULL;P=P->next){ if((P->data)%2==0){//当P的数据域为奇数的时候,一直向后指 L->next=P;//L的指针域就指向P(起到选择偶数的功能) L=P;//L指向P,形成一条偶数的链表 } } L->next=NULL;//结尾置空 }



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

      专题文章
        CopyRight 2018-2019 实验室设备网 版权所有