前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >数据结构实验之链表五:单链表的拆分(SDUT 2120)

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

作者头像
Lokinli
发布2023-03-09 16:46:54
1780
发布2023-03-09 16:46:54
举报
文章被收录于专栏:以终为始以终为始
代码语言:javascript
复制
#include <bits/stdc++.h>

using namespace std;

struct node
{
    int data;
    struct node *next;
};
struct node *crea(int n)
{
    int i;
    struct node *head, *p;
    head = (struct node *)malloc(sizeof(struct node));
    head -> next = NULL;
    for(i = 0; i < n; i ++)
    {
        p = (struct node *)malloc(sizeof(struct node));
        scanf("%d", &p -> data);
        p -> next = head -> next;
        head -> next = p;
    }
    return head;
}; 
struct node *spilt(struct node *head)
{
    struct node *head1, *p, *q;
    int a = 0, b = 0; 
    head1 = (struct node *)malloc(sizeof(struct node)); 
    head1 -> next = NULL;
    p = head -> next;
    head -> next = NULL;
    q = p -> next;
    while(p)
    {
        if(p -> data % 2 == 0)
        {
            p -> next = head -> next;
            head -> next = p;
            a++;
        }
        else
        {
            p -> next = head1 -> next;
            head1 -> next = p;
            b ++;
        }
        p = q;
        if(q)
            q = q -> next;
    }
    printf("%d %d\n",a,b);
    return head1;
};
int main()
{

    int n;
    struct node *head, *p, *q, *head1;
    scanf("%d", &n);
    head = crea(n);
    head1 = spilt(head);
    p = head -> next;
    while(p!=NULL)
    {
        if(p -> next != NULL)printf("%d ", p -> data);
        else printf("%d\n", p ->data);
        p = p -> next;
    }
    q = head1 -> next;
    while(q!=NULL)
    {
        if(q -> next != NULL)printf("%d ", q -> data);
        else printf("%d\n",q -> data);
        q = q -> next;
    }
    return 0;
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018-10-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档