6 | 您所在的位置:网站首页 › 删除单链表偶数节点 › 6 |
已知单链表的结点结构定义如下: 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 实验室设备网 版权所有 |