SDUT-2120_数据结构实验之链表五:单链表的拆分
2024-08-28 12:22:24
数据结构实验之链表五:单链表的拆分
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;
}
最新文章
- Service基础使用
- Caffe框架下的图像回归测试
- ABAP 供应商、工厂对应公里数维护
- STM32/GD32上内存堆栈溢出探测研究
- NPOI相关
- java多线程之Future和FutureTask
- 状态开关按钮(ToggleButton)及按钮(Swich)的使用
- C#中单问号,双问号的用法(转)
- jenkins+maven +svn+tomcat7集群部署(一)
- Supervisor管理进程
- subprocess
- Varnish http缓存服务器
- javascript五种基本类型
- Jenkins实现定时、顺序编译
- 为什么要使用yocto
- 九度oj-1001-Java
- js-template-art【二】语法
- css常用属性初总结:font
- Dubbo实践(十三)Export
- 如何防止app接口被别人调用
热门文章
- python 3.0读取文件出现编码错误(illegal multibyte sequence )
- Python子进程 (subprocess包)
- Leetcode643.Maximum Average Subarray I子数组的最大平均数1
- Js Array 删除
- bzoj 1191 [HNOI2006]超级英雄Hero——二分图匹配
- 如何正确的在Android中存储特定应用文件
- C 语言中 #pragma 的使用
- 数据库---JDBC的解析
- Katalon系列二十:读写Excle
- job中shell脚本异常(删除不存在容器),导致job被打断执行的问题 脚本优化方法