SDUT 2120 数据结构实验之链表五:单链表的拆分

来源:互联网 发布:sas数据分析大赛时间 编辑:程序博客网 时间:2024/06/11 21:21

数据结构实验之链表五:单链表的拆分

Time Limit: 1000ms   Memory limit: 65536K  有疑问?点这里^_^

题目描述

输入N个整数顺序建立一个单链表,将该单链表拆分成两个子链表,第一个子链表存放了所有的偶数,第二个子链表存放了所有的奇数。两个子链表中数据的相对次序与原链表一致。

输入

第一行输入整数N;;
第二行依次输入N个整数。

输出

第一行分别输出偶数链表与奇数链表的元素个数; 
第二行依次输出偶数子链表的所有数据;
第三行依次输出奇数子链表的所有数据。

示例输入

101 3 22 8 15 999 9 44 6 1001

示例输出

4 622 8 44 6 1 3 15 999 9 1001

提示

不得使用数组!




#include <bits/stdc++.h>using namespace std;struct lists{struct node{int data;struct node *next;}*head,*tail;lists(){head=(struct node *)malloc(sizeof(struct node));tail=head;}void add(int n){struct node *p;p=(struct node *)malloc(sizeof(struct node));p->data=n;tail->next=p;tail=p;tail->next=NULL;}void print(){struct node *p=head->next;while(p){if(p!=head->next)cout<<" ";cout<<p->data;p=p->next;}cout<<endl;}};int main(){ios::sync_with_stdio(false);lists s1,s2;int num,n,odd=0,eve=0;cin>>n;while(n--){cin>>num;if(num%2==0){s1.add(num);eve++;}else{s2.add(num);odd++;}}cout<<eve<<" "<<odd<<endl;s1.print();s2.print();return 0;}


0 0
原创粉丝点击