数据结构实验之链表五:单链表的拆分

Time Limit: 1000 ms Memory Limit: 65536 KiB

Problem Description

输入N个整数顺序建立一个单链表,将该单链表拆分成两个子链表,第一个子链表存放了所有的偶数,第二个子链表存放了所有的奇数。两个子链表中数据的相对次序与原链表一致。

Input

第一行输入整数N;;
第二行依次输入N个整数。

Output

第一行分别输出偶数链表与奇数链表的元素个数; 
第二行依次输出偶数子链表的所有数据;
第三行依次输出奇数子链表的所有数据。

Sample Input

10
1 3 22 8 15 999 9 44 6 1001

Sample Output

4 6
22 8 44 6
1 3 15 999 9 1001

Hint

不得使用数组!

拆开,新建两条子链;

#include <stdio.h>
#include <stdlib.h> struct node
{
int data;
struct node *next;
}; int main()
{
struct node *head, *tail, *p;
head = (struct node *)malloc(sizeof(struct node));
head->next = NULL;
tail = head;
int i,n,x=0,y=0;
scanf("%d",&n);
for(i=0; i<n; i++){
p = (struct node *)malloc(sizeof(struct node));
scanf("%d",&p->data);
p->next = NULL;
tail->next = p;
tail = p;
} struct node *head1, *head2, *tail1, *tail2, *p1, *p2;
head1 = (struct node *)malloc(sizeof(struct node));
head2 = (struct node *)malloc(sizeof(struct node));
head1->next = NULL;
head2->next = NULL;
tail1 = head1;
tail2 = head2; p = head->next;
while(p){
if(!(p->data%2)){
p1 = (struct node *)malloc(sizeof(struct node));
p1->data = p->data;
p1->next = NULL;
tail1->next = p1;
tail1 = p1;
x++;
}
else{
p2 = (struct node *)malloc(sizeof(struct node));
p2->data = p->data;
p2->next = NULL;
tail2->next = p2;
tail2 = p2;
y++;
}
p = p->next;
} printf("%d %d\n",x,y);
p1 = head1->next;
while(p1->next){
printf("%d ",p1->data);
p1 = p1->next;
} printf("%d\n",p1->data); p2 = head2->next;
while(p2->next){
printf("%d ",p2->data);
p2 = p2->next;
} printf("%d\n",p2->data); return 0;
}

最新文章

  1. Java项目JUnit简单使用
  2. 多浏览器兼容用javascript获取url参数的方法比较推荐的一种
  3. CSS浮动与清浮动
  4. datagrid实现行的上移和下移
  5. 【转】两分钟彻底让你明白Android Activity生命周期(图文)!----不错
  6. 多元线性相关Matlab代码
  7. http get with body data
  8. ireport 取消自动分页,detail不分页,当没有数据的时候显示title
  9. Ocelot网关
  10. npm 简单实用命令
  11. 在word 2010中采用EndNote X7插入引用
  12. 6月3 Smarty基础读取配置
  13. apache虚拟主机配置及常用安全配置
  14. FTP主动模式和被动模式的区别【转】
  15. Silverlight &amp; Blend动画设计系列十三:三角函数(Trigonometry)动画之飘落的雪花(Falling Snow)
  16. Android-删除指定包名的App
  17. 视觉slam闭环检测之-DBoW2 -视觉词袋构建
  18. head插件对elasticsearch 索引文档的增删改查
  19. 【学习笔记】Manacher算法
  20. HDU 1399 Starship Hakodate-maru(暴力搜索)

热门文章

  1. linux的基本指令--第三节
  2. 新装的Ubuntu没有ipconfig和ping命令
  3. 14.UNION 和 UNION ALL 操作符
  4. HttpSession相关API
  5. 智能IC卡与终端(读卡器)之间的传输协议
  6. Mysql CURD复习(数据库、表、数据)
  7. Jmeter跨线程组调用token
  8. javascript总结4:javascript常见变量
  9. css总结15:CSS3 圆角
  10. 编写高质量代码改善C#程序的157个建议——建议37:使用Lambda表达式代替方法和匿名方法