【2120】数据结构实验之链表五:单链表的拆分
2014-11-07 22:54
246 查看
数据结构实验之链表五:单链表的拆分
Time Limit: 1000ms Memory limit: 65536K 有疑问?点这里^_^
题目描述
输入N个整数顺序建立一个单链表,将该单链表拆分成两个子链表,第一个子链表存放了所有的偶数,第二个子链表存放了所有的奇数。两个子链表中数据的相对次序与原链表一致。
输入
第一行输入整数N;;第二行依次输入N个整数。
输出
第一行分别输出偶数链表与奇数链表的元素个数;第二行依次输出偶数子链表的所有数据;
第三行依次输出奇数子链表的所有数据。
示例输入
10 1 3 22 8 15 999 9 44 6 1001
示例输出
4 6 22 8 44 6 1 3 15 999 9 1001
提示
不得使用数组!
来源
示例程序
#include<stdio.h> #include<stdlib.h> struct node { int data; struct node *next; }; struct node *creat(int n) { struct node *head,*p,*tail; head=(struct node *)malloc(sizeof(struct node)); head->next=NULL; tail=head; int i; for(i=0;i<n;i++) { p=(struct node *)malloc(sizeof(struct node)); p->next=NULL; scanf("%d",&p->data); tail->next=p; tail=p; } return head; } int main() { struct node *head1,*tail1,*p; int n,h1=0,h2=0; scanf("%d",&n); head1=creat(n); tail1=head1; struct node *head2,*tail2; head2=(struct node *)malloc(sizeof(struct node)); head2->next=NULL; tail2=head2; p=head1->next; while(p!=NULL) { if(p->data%2==0) { tail1->next=p; tail1=p; p=p->next; tail1->next=NULL; h1++; } else { tail2->next=p; tail2=p; p=p->next; tail2->next=NULL; h2++; } } printf("%d %d\n",h1,h2); p=head1->next; while(p!=NULL) { (p->next==NULL)?(printf("%d\n",p->data)):(printf("%d ",p->data)); p=p->next; } p=head2->next; while(p!=NULL) { (p->next==NULL)?(printf("%d",p->data)):(printf("%d ",p->data)); p=p->next; } return 0; }
相关文章推荐
- 【2120】数据结构实验之链表五:单链表的拆分
- SDUT 2120 数据结构实验之链表五-单链表的拆分
- 【2120】数据结构实验之链表五:单链表的拆分 sdutOJ
- SDUT 2120-数据结构实验之链表五:单链表的拆分
- 2120 数据结构实验之链表五:单链表的拆分
- 【2120】数据结构实验之链表五:单链表的拆分 sdutOJ
- SDUT 2120 数据结构实验之链表五:单链表的拆分
- 2120-数据结构实验之链表五:单链表的拆分
- 【2120】数据结构实验之链表五:单链表的拆分
- SDUTOJ 2120数据结构实验之链表五:单链表的拆分
- SDUT 2120 数据结构实验之链表五:单链表的拆分
- SDUT 2120 数据结构实验之链表五:单链表的拆分 解法2
- 数据结构实验之链表五:单链表的拆分
- 数据结构实验之链表五:单链表的拆分
- 寒假第二天--线性表-- 数据结构实验之链表五:单链表的拆分
- 暑假集训第1天链表-数据结构实验之链表五:单链表的拆分
- 数据结构实验之链表五:单链表的拆分
- 数据结构实验之链表五:单链表的拆分
- 数据结构实验之链表五:单链表的拆分
- 数据结构实验之链表五:单链表的拆分