Description
输入N个整数顺序建立一个单链表,将该单链表拆分成两个子链表,第一个子链表存放了所有的偶数,第二个子链表存放了所有的奇数。两个子链表中数据的相对次序与原链表一致。
Input
第一行输入整数N;;
第二行依次输入N个整数。
Output
第一行分别输出偶数链表与奇数链表的元素个数;
第二行依次输出偶数子链表的所有数据;
第三行依次输出奇数子链表的所有数据。
Sample
Input
10 1 3 22 8 15 999 9 44 6 1001
Output
4 6 22 8 44 6 1 3 15 999 9 1001
Hint
不得使用数组!
AC代码:
#include <bits/stdc++.h>
using namespace std;
struct node
{
int data;
node *next;
};
node *crea (node *p , int n)
{
node *s = new node;
s ->data = n;
s ->next = NULL;
p ->next = s;
p = s;
return p;
}
void out (node *head)
{
while (head ->next)
{
head = head ->next;
cout << head ->data << " ";
}
}
int main ()
{
int j = 0,o = 0;
node *head = new node , *head1 = new node , *head2 = new node ;
head1 ->next= head2 ->next =head ->next = NULL;
int n;
cin >> n;
node *p = head1;
node *q = head2;
node *t = head;
while (n --)
{
int a;
cin >> a;
t = crea (t,a);
}
t = head;
while (t -> next)
{
t = t -> next;
if (t -> data % 2 == 0)
{
p = crea (p, t ->data);
o ++;
}
else {
q = crea (q, t ->data);
j ++;
}
}
cout << o << " " << j <<endl;
out (head1);
cout << endl;
out (head2);
return 0;
}