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

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 <string.h>
#include <stdlib.h> typedef struct node
{
int data;
struct node *next;
}link; link *newlink()
{
link *t;
t = (link*)malloc(sizeof(link));
t->next = NULL;
return t;
} link *create(int n)
{
link *head,*p,*q;
int i;
head = newlink();
p = head;
for(i=0;i<n;i++)
{
q = newlink();
scanf("%d",&q->data);
q->next = NULL;
p->next = q;
p = q;
}
return head;
} void show(link *head)
{
link *p;
p = head->next;
while(p)
{
if(p->next==NULL)
printf("%d\n",p->data);
else
printf("%d ",p->data);
p = p->next;
}
} void Chaifen(link *head)
{
link *head1,*r,*p,*q;
int m,n;
m = n = 0;
r = head->next;
head1 = newlink();
head->next = NULL;
p = head1;
q = head;
while(r)
{
if(r->data%2)
{
p->next = r;
p = p->next;
r = r->next;
m++;
}
else
{
q->next = r;
q = q->next;
r = r->next;
n++;
}
}
p->next = NULL;//结束标志
q->next = NULL;//结束标志
printf("%d %d\n",n,m);
show(head);
show(head1);
} int main()
{
link *head;
int n;
scanf("%d",&n);
head = create(n);
Chaifen(head);
return 0;
}

最新文章

  1. Service基础使用
  2. Caffe框架下的图像回归测试
  3. ABAP 供应商、工厂对应公里数维护
  4. STM32/GD32上内存堆栈溢出探测研究
  5. NPOI相关
  6. java多线程之Future和FutureTask
  7. 状态开关按钮(ToggleButton)及按钮(Swich)的使用
  8. C#中单问号,双问号的用法(转)
  9. jenkins+maven +svn+tomcat7集群部署(一)
  10. Supervisor管理进程
  11. subprocess
  12. Varnish http缓存服务器
  13. javascript五种基本类型
  14. Jenkins实现定时、顺序编译
  15. 为什么要使用yocto
  16. 九度oj-1001-Java
  17. js-template-art【二】语法
  18. css常用属性初总结:font
  19. Dubbo实践(十三)Export
  20. 如何防止app接口被别人调用

热门文章

  1. python 3.0读取文件出现编码错误(illegal multibyte sequence )
  2. Python子进程 (subprocess包)
  3. Leetcode643.Maximum Average Subarray I子数组的最大平均数1
  4. Js Array 删除
  5. bzoj 1191 [HNOI2006]超级英雄Hero——二分图匹配
  6. 如何正确的在Android中存储特定应用文件
  7. C 语言中 #pragma 的使用
  8. 数据库---JDBC的解析
  9. Katalon系列二十:读写Excle
  10. job中shell脚本异常(删除不存在容器),导致job被打断执行的问题 脚本优化方法