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

单链表的拆分 C语言代码参考,单链表的拆分 #include #include struct node { int data; struct node * next; }; struct node * creat(int n) { struct node * head,* p; head=(struct node *)malloc(sizeof(struct node)); head->next=NULL; int i; for(i=1;idata); p->next=head->next; head->next=p; } return head; } struct node * split(struct node * head1) { int c1=0; int c2=0; struct node * head2,* p,* q; head2=(struct node *)malloc(sizeof(struct node)); head2->next=NULL; p=head1->next; head1->next=NULL; q=p->next; while(p) { if(p->data%2==0) { p->next=head1->next; head1->next=p; c1++; } else { p->next=head2->next; head2->next=p; c2++; } p=q; if(q) q=q->next; } printf("%d %d\n",c1,c2); return head2; } void show(struct node * head) { struct node *p; p=head->next; while(p) { printf("%d",p->data); if(p->next) printf(" "); p=p->next; } printf("\n"); } int main() { int n; struct node * head1,* head2; scanf("%d",&n); head1=creat(n); head2=split(head1); show(head1); show(head2); return 0; } 立即下载

1.题目

数据结构实验之链表五:单链表的拆分
Time Limit: 1000 ms Memory Limit: 65536 KiB
Problem Description
输入N个整数顺序建立一个单链表,将该单链表拆分成两个子链表,第一个子链表存放了所有的偶数,第二个子链表存放了所有的奇数。两个子链表中数据的相对次序与原链表一致。
Input
第一行输入整数N;;
第二行依次输入N个整数。
Output
第一行分别输出偶数链表与奇数链表的元素个数;
第二行依次输出偶数子链表的所有数据;
第三行依次输出奇数子链表的所有数据。
Sample Input

10
1 3 22 8 15 999 9 44 6 1001

Sample Output

4 6
22 8 44 6
1 3 15 999 9 1001

2.正确代码

#include <stdio.h>
#include <stdlib.h>
struct node{
    int data;
    struct node *next;
};

int main()
{
    struct node *t1,*t2,*h1,*h2,*p;
    h1=(struct node*)malloc(sizeof(struct node));
    h2=(struct node*)malloc(sizeof(struct node));
    t1=h1;
    t2=h2;

    int k1=0,k2=0,n;

    scanf("%d",&n);

    for(int i=1;i<=n;i++)
    {
        p=(struct node*)malloc(sizeof(struct node));
        p->next=NULL;

        scanf("%d",&p->data);

        if(p->data%2==0)
        {
            k1++;
            t1->next=p;
            t1=p;
        }
        else
        {
            k2++;
            t2->next=p;
            t2=p;
        }
    }

    printf("%d %d\n",k1,k2);

    h1=h1->next;
    h2=h2->next;

    while(h1)
    {
        if(h1->next!=NULL)
            printf("%d ",h1->data);
        else
            printf("%d\n",h1->data);
        h1=h1->next;
    }
    while(h2)
    {
        if(h2->next!=NULL)
            printf("%d ",h2->data);
        else
            printf("%d\n",h2->data);
        h2=h2->next;
    }

    return 0;


}

3.解题思路:

我们不用先建好再拆分,而是直接根据不同的奇偶性来分别建立链表。
虽然可能不符合要求,但就解题速度来讲可以说相当简单了。

【动态多智能体系统的通信感知编队控制】一种新颖的通信感知编队控制策略,用于动态多智能体系统研究(Matlab代码、Python代码实现) 内容概要:文档名为《Plecs全桥LLC谐振变换器仿真模型.txt》,但其内容并未深入介绍Plecs环境下全桥LLC谐振变换器的具体建模与仿真过程,而是呈现为一份涵盖多领域科研主题的资源列表。文档内容广泛涉及多智能体系统控制、无人机路径规划、电力电子变换器、状态估计、信号处理、优化算法等研究方向,并多次提及Matlab/Simulink、Python等工具的代码实现。整体来看,该文档更像是一份科研项目目录或技术资源索引,重点推介了包括LLC谐振变换器在内的多种控制系统与电力电子仿真模型,但对标题所述核心内容缺乏详尽的技术描述与实现细节。; 适合人群:电力电子、自动化、控制工程、信号处理及多智能体系统等相关领域的研究生、科研人员与工程技术人员。; 使用场景及目标:①为科研工作者提供跨学科的技术方向参考与研究选题灵感;②获取电力系统、无人机控制、信号处理等领域成熟的Matlab/Simulink或Python仿真代码资源,用于算法验证与模型复现。; 阅读建议:建议将此文档作为科研资源导航目录使用,读者可根据自身研究方向筛选感兴趣的主题,并通过文中提供的公众号或网盘链接获取完整的代码、仿真模型与配套资料进行深入学习与实践。 立即下载

相关推荐

Codex CLI 接入智谱 GLM-5.1 完整教程

Codex CLI 是 OpenAI 推出的命令行 AI 编程工具,支持自主读取文件、执行命令、编写代码等操作,是目前最火的终端 AI 编程工具之一。通过 CLIProxyAPI 代理,我们成功将 Codex CLI 与智谱 GLM-5.1 模型对接,核心在于解决 Responses API 与 Chat Completions API 的协议转换问题。✅成熟稳定:CLIProxyAPI 社区活跃(4.7k fork),持续维护✅完整兼容:支持流式/非流式、function calling✅低成本。

u011831527的博客 2574

【数据结构】----将一个链表拆分为两个链表

《算法设计与分析》课堂作业 将一个链表拆分为两个链表 要求:将一个链表1、2、3、4、5、6、7、8、9、10 拆分为1、3、5、7、9 和2、4、6、8、10这两个链表 思路: 方法呢很简单,就是在第一个结点,看第二个是否存在,若存在,就把第二个加入链表2,并在链表1中删去,然后移动到第三个结点,同样的,看第四个存在不,若存在,就加入链表2并删去,继续在第五个结点,判断第六个。。。 ...

1900的博客 1万+

FISCO-BCOS配置及使用控制台

如果因为网络问题长时间无法下载,请尝试:curl -#LO https://gitee.com/FISCO-BCOS/console/raw/master-2.0/tools/download_console.sh && bash download_console.sh。为了可以更加方便快捷,所以HelloWorld合约已经被内置了,位于控制台下面的contracts/solidity/HelloWorld.sol。用于获取和设置name的值,合约代码如下。部署成功会返回合约地址。

qq_51562644的博客 831

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

题目描述 输入N个整数顺序建立一个单链表,将该单链表拆分成两个子链表,第一个子链表存放了所有的偶数,第二个子链表存放了所有的奇数。两个子链表中数据的相对次序与原链表一致。 输入 第一行输入整数N;;第二行依次输入N个整数。 输出 第一行分别输出偶数链表与奇数链表的元素个数; 第二行依次输出偶数子链表的所有数据;第三行依次输出奇数子链表的所有数据。 示例输入 10 1 3 22 ...

weixin_34175509的博客 959

CODESYS V3.5 SP17编程环境全攻略:从安装到多语言编程实战

本文全面解析CODESYS V3.5 SP17编程环境,从安装配置到多语言编程实战技巧。详细介绍了运行时环境设置、六种IEC 61131-3语言的特性对比与混合编程策略,以及高级功能开发如自定义算法模块和实时通信配置。适合工业自动化工程师快速掌握这一强大工具。

weixin_30632089的博客 489

cellchat安装

cellchat

m0_65188455的博客 5448

面试金典13(Python)—— 分割链表(中等)

概述:给你一个链表的头节点 head 和一个特定值 x ,请你对链表进行分隔,使得所有 小于 x 的节点都出现在大于或等于 x 的节点之前。你不需要保留每个分区中各节点的初始相对位置。

m0_61661179的博客 5万+

Java实战:用Proj4j搞定WGS84与CGCS2000坐标互转(附完整代码)

本文详细介绍了如何使用Java库Proj4j实现WGS84与CGCS2000坐标系之间的高精度转换。通过七参数转换模型和格网改正量文件,提供完整的代码实现和项目配置指南,帮助开发者快速集成到地理信息系统项目中,提升坐标转换效率和精度。

weixin_29251567的博客 828

求助—python 单链表如何依据节点值域的奇偶性拆分单链表?

def even_odd(self): cur1=cur2=None p=self._head while p is not None: if p.elem%2 !=0: if cur1: cur1.next=p p.next=None cur1=cur1.next print(cur1.elem) else: cur1=p print(cur1.elem) 这是我尝试写的代码,貌似不能把奇偶数很好的分开;我也找不到,问题点;可有偿求助。 ...

patrick_fish的博客 266

精益六西格玛Python数字化应用开发-Day18 应用场景:家电企业生产效率优化

本文将重点介绍专门针对精益六西格玛黑带使用场景的 Python 库,这些库功能侧重于数据分析和流程优化,特别适用于 DMAIC 方法论和看板管理。考虑到读者具备中高级Python 使用经验,我们将深入探讨各库的高级功能和实际应用应用场景。 某家电企业生产线自动化程度高,数据量巨大,希望通过精益管理提升生产效率。企业借助 Python 脚本,打通各类数据源(MES、ERP、设备日志),自动归集生产数据,分析各工序的生产节拍、设备停机、效率损失,快速定位瓶颈环节

m0_56592100的博客 906

T型三电平逆变器中点电位平衡详解

T型三电平逆变器(T-type Three-Level Inverter)是一种高效的多电平拓扑,相比传统NPC(Neutral Point Clamped)三电平逆变器,具有更低的开关损耗、更高效率和更简单的结构,尤其适用于中功率应用(如光伏逆变器、风电变换器和工业驱动)。(T-type Three-Level Inverter)中的应用已成为当前中高压功率变换领域(如光伏逆变器、储能PCS、电动汽车充电桩、风电并网和工业驱动)的热门方案。针对 T型逆变器,类似 NPC 的零序注入法适用。

专注于前沿技术的探索与实践,热衷于从代码逻辑、架构设计到行业应用等多维度深挖技术本质。期待在技术之路上与你共同成长~ 545

将单链表拆分为两个特定的单链表

将一个给定的单链表拆分为两个特定的单链表

yfainaer的专栏 9674

老电脑续命神器:Windows 11 26H1 精简游戏版,帧率稳定无压力!(Win11 26H1 极致精简游戏版(3.17G):装完只占 8G 内存,Ultra CPU 性能拉满)

旧电脑福音也能安装windows11畅玩游戏🎮:文章分享一款 Windows 11 26H1 精简游戏版,仅 3.17G、C 盘占用 8G,开机进程约 50 个,内存占用 1.4G,内置游戏优化与运行库,支持离线安装、跳过 TPM 检测,让老电脑也能畅玩 3A 游戏和办公娱乐 🚀。

XiaoqiangClub的博客 1064

python 链表分割

题目描述 编写代码,以给定值x为基准将链表分割成两部分,所有小于x的结点排在大于或等于x的结点之前 给定一个链表的头指针 ListNode*pHead,请返回重新排列后的链表的头指针。注意:分割以后保持原来的数据顺序不变。 注意:此处用的代码是python2 一开始我是像下面那样写的 class Partition: def partition(self, pHead, x)...

lyc0424的博客 947

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

把一个链表的奇数和偶数分开

给你一个单链表,修改此单链表,使得前面是偶数,后面是奇数。偶数间的相对顺序不变,奇数间的相对顺序不变。返回修改后的单链表的头节点。例如:Input: 17-&gt;15-&gt;8-&gt;12-&gt;10-&gt;5-&gt;4-&gt;1-&gt;7-&gt;6-&gt;NULLOutput: 8-&gt;12-&gt;10-&gt;4-&gt;6-&gt;17-&gt;15

u013546334的专栏 3902

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

【数据结构】链表的应用-分裂为两个奇偶数的循环单链表

例题2-8:设L为一带头节点的循环单链表,链表中存储一组无序的整数。请设计算法,将链表中结点分成一个奇数链和一个偶数链的带有头结点的循环单链表,分别由P,Q指向; #include&lt;stdio.h&gt; #include&lt;stdlib.h&gt; #include&lt;string.h&gt; #include&lt;iostream&gt; #define LElemType...

Z_sea的博客 1234

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

面试题14:调整数组顺序使奇数位于偶数前面、链表按奇偶拆分

题目:输入一个数组,实现一个函数调整该数组中的数字顺序,使得奇数在前,偶数在后。思路:快速排序的分区思想,设置首尾两指针,找到前半部分的偶数和后半部分的奇数,交换即可。算法复杂度为O(n)。代码如下:void ReorderOddEven(vector<int> &data) { int size = data.size(); int p = 0, q = size-1; w

罗布泊coding 1106

有序链表的拆分

链表五:单链表的拆分 Time Limit: 1000MS Memory Limit: 65536KB Submit Statistic Problem Description 输入N个整数顺序建立一个单链表,将该单链表拆分成两个子链表,第一个子链表存放了所有的偶数,第二个子链表存放了所有的奇数。两个子链表中数据的相对次序与原链表一致。 Input 第一行输入整数N;

且视他人之疑目如盏盏鬼火 416

单链表拆分

已知单链表中的元素含有三类字符:字母,数字和其它字符。试编写算法,构造三个循环链表,使每个循环链表中只含有同一类字符。 #include #include using namespace std; template struct Node { T data; Node* next; }; template //尾插建立循环单链表 Node* creat_back( Nod

你好_晴天 796
上一篇: SDUT 2120 数据结构实验之链表五:单链表的拆分
下一篇: 离散数学 SDUT 4182 哪款赛车最佳?
OneTrianee
博客等级 码龄9年 32粉丝 152原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值