#include<iostream>
#include<malloc.h>
using namespace std;
int a=0,b=0;
struct node
{
int data;
struct node *next;
};
struct node *creat(int m)
{
struct node *head,*tail,*p;
int i;
head=(struct node *)malloc(sizeof(struct node));
head->next=NULL;
tail=head;
for(i=1;i<=m;i++)
{
p=(struct node *)malloc(sizeof (struct node ));
cin>>p->data;
p->next=NULL;
tail->next=p;
tail = p;
}
return head;
};
struct node *split(struct node *head1)
{
struct node *p,*q,*head2;
head2=(struct node*)malloc(sizeof(struct node ));
head2->next=NULL;
p=head1->next;head1->next=NULL;
q=p->next;
struct node *tail1=head1;
struct node *tail2=head2;
while(p)
{
if(p->data%2==0)
{
a++;
tail1->next= p;
tail1=p;
tail1->next=NULL;
}
else
{
b++;
tail2->next= p;
tail2=p;
tail2->next=NULL;
}
p=q;
if(q)
{
q=q->next;
}
}
return head2;
}
void display(struct node *head1)
{
struct node *q;
q=head1->next;
while(q!=NULL)
{
cout << q->data;
if(q->next!=NULL)
cout<<" ";
q=q->next;
}
cout<<endl;
}
int main()
{
int n,h,m;
struct node *head1,*head2;
cin>>m;
head1=creat(m);
head2= split(head1);
cout<<a<<" "<<b<<endl;
display(head1);
display(head2);
return 0;
}
2120数据结构实验之链表五:单链表的拆分
最新推荐文章于 2018-05-27 10:44:05 发布