数据结构实验之链表五:单链表的拆分
2019-03-18 17:28
120 查看
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
这类题目刷多了以后 就是一个用法用多次,比如这个题 三次尾插法,,
#include<cstdio> using namespace std; struct node { int data; node *next; }; int main() { node *head,*tail,*p; int n; head=new node; head->next=NULL; tail=head; scanf("%d",&n); while(n--)//建立链表 { p=new node; scanf("%d",&p->data); p->next=NULL; tail->next=p; tail=p; } node *h1,*h2,*t1,*t2;//建两个 单双; h1=new node; h1->next=NULL; h2=new node; h2->next=NULL; t1=h1; t2=h2; p=head->next; int n1=0,n2=0; while(p) { if(p->data%2==0)//建链表 { t1->next=p; t1=p; n1++; } else//有一次建链表 { t2->next=p; t2=p; n2++; } p=p->next; } t1->next=NULL; t2->next=NULL; printf("%d %d\n",n1,n2); t1=h1->next; while(t1->next) { printf("%d ",t1->data); t1=t1->next; } printf("%d\n",t1->data); t2=h2->next; while(t2->next) { printf("%d ",t2->data); t2=t2->next; } printf("%d",t2->data); return 0; }
相关文章推荐
- 数据结构实验之链表五:单链表的拆分
- 暑假集训第1天链表-数据结构实验之链表五:单链表的拆分
- 数据结构实验之链表五:单链表的拆分
- 数据结构实验之链表五:单链表的拆分
- 【2120】数据结构实验之链表五:单链表的拆分 sdutOJ
- 数据结构实验之链表五:单链表的拆分
- 数据结构实验之链表五:单链表的拆分
- 【2120】数据结构实验之链表五:单链表的拆分 sdutOJ
- SDUT OJ 数据结构实验之链表五:单链表的拆分
- 数据结构实验之链表五:单链表的拆分
- 数据结构实验之链表五:单链表的拆分
- 数据结构实验之链表五:单链表的拆分
- 数据结构实验之链表五:单链表的拆分
- 数据结构实验之链表五:单链表的拆分
- 数据结构实验之链表五:单链表的拆分
- 数据结构实验之链表五:单链表的拆分
- SDUT OJ 数据结构实验之链表五:单链表的拆分
- 【2120】数据结构实验之链表五:单链表的拆分
- sdutacm- 数据结构实验之链表五:单链表的拆分
- 数据结构实验之链表五:单链表的拆分