数据结构实验之链表五:单链表的拆分
2018-10-09 18:58
148 查看
数据结构实验之链表五:单链表的拆分
Time Limit: 1000 ms Memory Limit: 65536 KiB
Problem Description
输入N个整数顺序建立一个单链表,将该单链表拆分成两个子链表,第一个子链表存放了所有的偶数,第二个子链表存放了所有的奇数。两个子链表中数据的相对次序与原链表一致。
Input
第一行输入整数N;;
第二行依次输入N个整数。
Output
第一行分别输出偶数链表与奇数链表的元素个数;
第二行依次输出偶数子链表的所有数据;
第三行依次输出奇数子链表的所有数据。
Sample Input
[code]10 1 3 22 8 15 999 9 44 6 1001
Sample Output
[code]4 6 22 8 44 6 1 3 15 999 9 1001
Hint
不得使用数组!
Source
[code]#include <iostream> using namespace std; struct node { int data; struct node *next; }; int os=0, qs=0; node *h1, *h2; node *create(int n) { node *p, *head, *tail; head = new node; head->next = NULL; tail = head; while(n--) { p = new node; cin>>p->data; p->next = NULL; tail->next = p; tail = p; } return head; } void split(node *head) { node *p, *t1, *t2; p = head->next; h1 = new node; h2 = new node; h1->next = NULL; h2->next = NULL; t1 = h1; t2 = h2; while(p) { if(p->data%2==0) { t1->next = p; t1 = p; os++; } else { t2->next = p; t2 = p; qs++; } p = p->next; } t1->next = NULL; t2->next = NULL; } void print(node *head) { node *p; p = head->next; while(p) { cout<<p->data; if(p->next!=NULL) cout<<' '; p = p->next; } cout<<endl; } int main() { int n; node *head; cin>>n; head = create(n); split(head); cout<<os<<' '<<qs<<endl; print(h1); print(h2); return 0; }
阅读更多
相关文章推荐
- 寒假第二天--线性表-- 数据结构实验之链表五:单链表的拆分
- 数据结构实验之链表五:单链表的拆分
- sdutacm- 数据结构实验之链表五:单链表的拆分
- 数据结构实验之链表五:单链表的拆分
- 数据结构实验之链表五:单链表的拆分
- SDUTACM 数据结构实验之链表五:单链表的拆分
- 【2120】数据结构实验之链表五:单链表的拆分
- 数据结构实验之链表五:单链表的拆分
- 数据结构实验之链表五:单链表的拆分
- 数据结构实验之链表五:单链表的拆分
- 数据结构实验之链表五:单链表的拆分
- 数据结构实验之链表五:单链表的拆分
- 数据结构实验之链表五:单链表的拆分
- 2120 数据结构实验之链表五:单链表的拆分
- 数据结构实验之链表五:单链表的拆分
- 数据结构实验之链表五:单链表的拆分
- 数据结构实验之链表五:单链表的拆分
- 数据结构实验之链表五:单链表的拆分
- 数据结构实验之链表五:单链表的拆分
- SDUT-数据结构实验之链表五:单链表的拆分