Problem Description输入N个整数顺序建立一个单链表,将该单链表拆分成两个子链表,第一个子链表存放了所有的偶数,第二个子链表存放了所有的奇数。两个子链表中数据的相对次序与原链表一致。Input第一行输入整数N;;第二行依次输入N个整数。Output第一行分别输出偶数链表与奇数链表的元素个数; 第二行依次输出偶数子链表的所有数据;第三行依次输出奇数子链表的所有数据。Example Input101 3 22 8 15 999 9 44 6 1001Example Output4 622 8 44 6 1 3 15 999 9 1001#include#include #include #include using namespace std;struct node{ int data; struct node *next;}*head1,*head2;int m,k;//m记录偶数的个数,k记录奇数的个数struct node *creat(int n){ m=0; k=0; int i; struct node *t,*p,*q; head1=(struct node *)malloc(sizeof(struct node)); head2=(struct node *)malloc(sizeof(struct node)); head1->next=NULL; head2->next=NULL; t=head1; q=head2; for(i=0;i data); if(p->data%2==0) { p->next=NULL; t->next=p; t=t->next; m++; } else { p->next=NULL; q->next=p; q=q->next; k++; } } return head1;};void show(struct node *head){ struct node *p; p=head->next; while(p) { if(p->next==NULL) printf("%d\n",p->data); else printf("%d ",p->data); p=p->next; }}int main(){ int n; scanf("%d",&n); creat(n); printf("%d %d\n",m,k); show(head1); show(head2); return 0;}