2120 数据结构实验之链表五:单链表的拆分
2017-09-29 15:18
302 查看
数据结构实验之链表五:单链表的拆分
Time Limit: 1000MS Memory Limit: 65536KBProblem Description
输入N个整数顺序建立一个单链表,将该单链表拆分成两个子链表,第一个子链表存放了所有的偶数,第二个子链表存放了所有的奇数。两个子链表中数据的相对次序与原链表一致。Input
第一行输入整数N;;第二行依次输入N个整数。
Output
第一行分别输出偶数链表与奇数链表的元素个数;第二行依次输出偶数子链表的所有数据;
第三行依次输出奇数子链表的所有数据。
Example Input
10 1 3 22 8 15 999 9 44 6 1001
Example Output
4 6 22 8 44 6 1 3 15 999 9 1001
Hint
不得使用数组!#include <bits/stdc++.h> using namespace std; typedef struct node { int date; struct node *next; }Lnode; Lnode *creat(int n) //建表 输入 { Lnode *p,*q,*head; head = new node; head -> next = NULL; q = head; while(n--) { p = new node; p -> next = NULL; scanf("%d",&p->date); q ->next = p; q = p; } return head; } void output( Lnode *head) //输出 { Lnode *q; q = head ->next; cout << q ->date; while(q->next) { cout << " " << q ->next ->date; q = q ->next; } cout << endl; } void change(Lnode * head1) //拆分 { int x=0, y=0; Lnode *head2, *p1, *p2, *q, *r; head2 = new node; head2 -> next = NULL; q = head1->next; p1 = head1; p2 = head2; while(q) { r = new node; r ->date = q ->date; r -> next = NULL; if(r->date%2==0) { p1->next = r; p1 = r; q = q ->next; x++; } else { p2->next = r; p2 = r; q = q ->next; y++; } } cout << x << " " << y << endl; output(head1); output(head2); } int main() { int n; Lnode *head1; cin >> n; head1 = creat(n); change(head1); return 0; }
相关文章推荐
- 【2120】数据结构实验之链表五:单链表的拆分
- 【2120】数据结构实验之链表五:单链表的拆分
- 【2120】数据结构实验之链表五:单链表的拆分 sdutOJ
- 【2120】数据结构实验之链表五:单链表的拆分 sdutOJ
- 2120-数据结构实验之链表五:单链表的拆分
- SDUT 2120-数据结构实验之链表五:单链表的拆分
- SDUT 2120 数据结构实验之链表五:单链表的拆分
- SDUTOJ 2120数据结构实验之链表五:单链表的拆分
- 【2120】数据结构实验之链表五:单链表的拆分
- SDUT 2120 数据结构实验之链表五-单链表的拆分
- SDUT 2120 数据结构实验之链表五:单链表的拆分
- SDUT 2120 数据结构实验之链表五:单链表的拆分 解法2
- 数据结构实验之链表五:单链表的拆分
- sdutacm- 数据结构实验之链表五:单链表的拆分
- 数据结构实验之链表五:单链表的拆分
- 数据结构实验之链表五:单链表的拆分
- 数据结构实验之链表五:单链表的拆分
- 数据结构实验之链表五:单链表的拆分
- 数据结构实验之链表五:单链表的拆分 oj
- 数据结构实验之链表五:单链表的拆分