数据结构实验之链表五:单链表的拆分
来源:互联网 发布:论文中的财务报表数据 编辑:程序博客网 时间:2024/05/17 04:02
题目描述
输入N个整数顺序建立一个单链表,将该单链表拆分成两个子链表,第一个子链表存放了所有的偶数,第二个子链表存放了所有的奇数。两个子链表中数据的相对次序与原链表一致。输入
第一行输入整数N;;
第二行依次输入N个整数。输出
第一行分别输出偶数链表与奇数链表的元素个数;
第二行依次输出偶数子链表的所有数据;
第三行依次输出奇数子链表的所有数据。示例输入
101 3 22 8 15 999 9 44 6 1001
示例输出
4 622 8 44 6 1 3 15 999 9 1001
- #include<stdio.h>
- #include<stdlib.h>
- struct node
- {
- int date;
- struct node *next;
- };
- struct node *p,*q,*head1=NULL,*head2,*tail1,*tail2;
- int main()
- {
- int m,n,s;
- n=0;s=0;
- scanf("%d",&m);
- head2=(struct node*)malloc(sizeof(struct node));
- head1=(struct node*)malloc(sizeof(struct node));
- q=head1;
- while(m--)
- {
- if((p=(struct node*)malloc(sizeof(struct node)*1))==NULL)
- return 0;
- scanf("%d",&p->date);
- p->next=NULL;
- q->next=p;
- q=q->next;
- }
- head2->next=NULL;
- tail1=head1;
- tail2=head2;
- p=head1->next;
- q=p->next;
- head1->next=NULL;
- while(p!=NULL)
- {
- if(p->date%2==0)
- {
- p->next=NULL;
- tail1->next=p;
- tail1=p;
- n++;
- }
- else
- {
- p->next=NULL;
- tail2->next=p;
- tail2=p;
- s++;
- }
- p=q;
- if(q!=NULL)
- q=q->next;
- }
- printf("%d %d\n",n,s);
- q=head1->next;
- while(q!=NULL)
- {
- printf("%d",q->date);
- if(q->next!=NULL)
- printf(" ");
- q=q->next;
- }
- printf("\n");
- p=head2->next;
- while(p!=NULL)
- {
- printf("%d",p->date);
- if(p->next!=NULL)
- printf(" ");
- p=p->next;
- }
- return 0;
- }
0 0
- 数据结构实验之链表五:单链表的拆分
- 数据结构实验之链表五:单链表的拆分
- 数据结构实验之链表五:单链表的拆分
- 数据结构实验之链表五:单链表的拆分
- 数据结构实验之链表五:单链表的拆分
- 数据结构实验之链表五:单链表的拆分
- 数据结构实验之链表五:单链表的拆分
- 数据结构实验之链表五:单链表的拆分
- 数据结构实验之链表五:单链表的拆分
- 数据结构实验之链表五:单链表的拆分
- 数据结构实验之链表五:单链表的拆分
- 数据结构实验之链表五:单链表的拆分
- 数据结构实验之链表五:单链表的拆分
- 数据结构实验之链表五:单链表的拆分
- 数据结构实验之链表五:单链表的拆分
- 数据结构实验之链表五:单链表的拆分
- 数据结构实验之链表五:单链表的拆分
- 数据结构实验之链表五:单链表的拆分
- 树与图的应用:二叉树的构造、遍历和求叶子数和高度
- 数据结构实验之链表一:顺序建立链表
- EXTJS网络系统收集
- 数据结构上机测试2-2:单链表操作B
- 数据结构上机测试2-1:单链表操作A
- 数据结构实验之链表五:单链表的拆分
- Lua基础 表达式
- JAVA hdu 2309 ICPC Score Totalizer Software
- LED显示屏
- 玩《天才樱木来了》
- 【数学基础】多个数的最小公倍数
- 上下文无关文法、上下文有关文法
- lighttpd 使用反向代理实现简单负载均衡(多域名多内网主机实现)
- secureCRT端口转发功能突破防火墙限制