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

来源:互联网 发布:淘宝买药流程 提交需求 编辑:程序博客网 时间:2024/06/11 02:37
<h2 style="padding: 0px; margin: 10px 0px 7px; font-family: 微软雅黑, 'Trebuchet MS', Helvetica, Arial, Geneva, sans-serif; font-weight: normal; color: rgb(124, 169, 237); font-size: 20px; line-height: 24px;">题目描述</h2><div class="pro_desc" style="padding: 0px; margin: 0px; color: rgb(51, 51, 51); font-family: 微软雅黑, 黑体, 宋体, Verdana, Helvetica, Arial, Geneva, sans-serif; line-height: 18px;">输入N个整数顺序建立一个单链表,将该单链表拆分成两个子链表,第一个子链表存放了所有的偶数,第二个子链表存放了所有的奇数。两个子链表中数据的相对次序与原链表一致。</div><h2 style="padding: 0px; margin: 10px 0px 7px; font-family: 微软雅黑, 'Trebuchet MS', Helvetica, Arial, Geneva, sans-serif; font-weight: normal; color: rgb(124, 169, 237); font-size: 20px; line-height: 24px;">输入</h2><div class="pro_desc" style="padding: 0px; margin: 0px; color: rgb(51, 51, 51); font-family: 微软雅黑, 黑体, 宋体, Verdana, Helvetica, Arial, Geneva, sans-serif; line-height: 18px;">第一行输入整数N;;<br style="padding: 0px; margin: 0px;" />第二行依次输入N个整数。</div><h2 style="padding: 0px; margin: 10px 0px 7px; font-family: 微软雅黑, 'Trebuchet MS', Helvetica, Arial, Geneva, sans-serif; font-weight: normal; color: rgb(124, 169, 237); font-size: 20px; line-height: 24px;">输出</h2><div class="pro_desc" style="padding: 0px; margin: 0px; color: rgb(51, 51, 51); font-family: 微软雅黑, 黑体, 宋体, Verdana, Helvetica, Arial, Geneva, sans-serif; line-height: 18px;">第一行分别输出偶数链表与奇数链表的元素个数; <br style="padding: 0px; margin: 0px;" />第二行依次输出偶数子链表的所有数据;<br style="padding: 0px; margin: 0px;" />第三行依次输出奇数子链表的所有数据。</div><h2 style="padding: 0px; margin: 10px 0px 7px; font-family: 微软雅黑, 'Trebuchet MS', Helvetica, Arial, Geneva, sans-serif; font-weight: normal; color: rgb(124, 169, 237); font-size: 20px; line-height: 24px;">示例输入</h2><div class="data" style="padding: 0px; margin: 0px; font-family: 'Courier New', Courier, monospace; font-size: 16px; white-space: pre; line-height: 20px; border: 1px solid rgb(173, 173, 173); color: rgb(51, 51, 51); background-color: rgb(224, 224, 224);"><pre style="padding: 0px; margin-top: 0px; margin-bottom: 0px;">101 3 22 8 15 999 9 44 6 1001

示例输出

4 622 8 44 6 1 3 15 999 9 1001
#include<stdio.h>#include<stdlib.h>struct node{    int data;    struct node *next;};int main(){    int n;    struct node * head1, *head, *p, *q,*tail,*tail1;    scanf("%d",&n);    head=(struct node *)malloc(sizeof(struct node));    head->next=NULL;    tail=head;    for(int i=0;i<n;i++)    {        p=(struct node *)malloc(sizeof(struct node));        p->next=NULL;        scanf("%d",&p->data);        tail->next=p;        tail=p;    }    p=head->next;    int a=0, b=0;    head1=(struct node *)malloc(sizeof(struct node));    head1->next=NULL;    tail1=head1;    tail=head;    q=p->next;    while(p!=NULL)    {        if(p->data%2==0)        {           p->next=NULL;           tail->next=p;           tail=p;            a++;        }        else        {            p->next=NULL;            tail1->next=p;            tail1=p;            b++;        }        p=q;        if(q!=NULL)            q=q->next;    }    printf("%d %d\n",a,b);    p=head->next;    while(p!=NULL)    {        if(p->next==NULL)            printf("%d\n",p->data);        else            printf("%d ",p->data);        p=p->next;    }    q=head1->next;    while(q!=NULL)    {        if(q->next==NULL)            printf("%d\n",q->data);        else            printf("%d ",q->data);        q=q->next;    }    return 0;}


                                             
0 0