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

来源:互联网 发布:李约瑟问题知乎 编辑:程序博客网 时间:2024/06/06 01:10

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

#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;}
0 0
原创粉丝点击