C语言——分割单向链表

本文的内容是使用C语言分割单向链表,给出一个链表和一个值,要求链表中小于给定值的节点全都位于大于或等于给定值的节点之前,打印原始链表的所有元素和经此操作之后链表的所有元素。
分析:本题只是单向链表的分割,不涉及排序,因此把小于给定值的节点连成一个链表,再把大于等于给定值的节点连成一个链表,然后把两个链表再链接到一起即可形成题目要求的链表。
注意:要记住两个链表各自的头节点,不然最后没办法连接到一起;存放大值的链表最后要指向NULL;两个链表的头节点要动态申请内存,用以保存分割链表后的两个头节点。
在这里插入图片描述
完整的源代码如下。

#include <stdio.h> 
#include <stdlib.h>

typedef struct linklist
{
	int data;
	struct linklist *next;
}Linklist;

Linklist *CreateLinkList()
{
    int n = 0;
    Linklist *head,*p,*q;
    head = NULL;
    p = (Linklist *)malloc(sizeof(Linklist));
    printf("input data %d (input 65535 end):",n+1);
    scanf("%d",&p->data);
    if(p->data == 65535)
        return head;
    
    while(1)
    {
        n++;
        if(n==1)
            head = p;
        else
            q->next = p;
        q = p;
        p = (Linklist *)malloc(sizeof(Linklist));
        printf("input data %d (input 65535 end):",n+1);
        scanf("%d",&p->data);
        if(p->data == 65535)
            break;
    }
    q->next = NULL;
    return head;
}

Linklist *divide(Linklist* head,int x)
{
	Linklist *p = (Linklist*)malloc(sizeof(Linklist));
	Linklist *q = (Linklist*)malloc(sizeof(Linklist));
	Linklist *headp;
	Linklist *headq;
	headp = p;
	headq = q;
	while(head != NULL)
	{
		if(head->data < x)
		{
			p->next = head;
			p = p->next;
		}
		else
		{
			q->next = head;
			q = q->next;
		}
		head = head->next;
	}
	p->next = headq->next;
	q->next = NULL;
	return headp->next;
}

void print_linklist(Linklist *head)
{
    Linklist *p;
    p = head;
    if(head != NULL)
    {
        do{
            printf("%d ",p->data);
            p = p->next;
        }while(p != NULL);
		printf("\n");
    }
    else
        printf("The link list is empty!\n");
}

void main()
{
	Linklist *head;
	head = CreateLinkList();
	printf("原链表序列:");
	print_linklist(head);
	head = divide(head,10);
	printf("分割后链表序列:");
	print_linklist(head);
}

上面程序的结果如下图所示。
在这里插入图片描述
根据上面的运行结果可以看到,代码满足题目的要求。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/149612.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

JavaScript 语句、标识符、变量

语句 JavaScript程序的单位是行(line),也就是一行一行地执行。一般情况下&#xff0c;每一行就是一个语句 var num 10; 语句以分号结尾&#xff0c;一个分号就表示一个语句结束。 标识符 标识符(identifier)指的是用来识别各种值的合法名称。最常见的标识符就是变量名标识符…

如何快速将钉钉员工信息同步到飞书

当企业内部在使用钉钉跟飞书时&#xff0c;那么当钉钉员工信息发生更改时&#xff0c;我们应该如何将信息快速同步到飞书上呢&#xff0c;接下来我们借助RestCloud AppLink平台进行演示。 第一步&#xff1a;获得钉钉以及飞书认证授权 钉钉授权 钉钉接入采用自建应用的方式&…

二维码智慧门牌管理系统升级解决方案:流量监控引领服务卓越

文章目录 前言一、流量监控功能概述二、流量监控的益处三、应用案例和成功故事四、实施和支持 前言 随着科技的不断发展&#xff0c;二维码智慧门牌管理系统在其便捷高效的管理方式下&#xff0c;深受广大用户喜爱。为了更好地满足用户需求&#xff0c;提升服务质量&#xff0…

Python OpenCV 通过trackbar调整图像亮度对比度颜色

上一篇文章通过设置固定值的方式来调整图像&#xff0c;这篇文章通过trackbar来动态调整参数&#xff0c;从而实时展现图像处理结果&#xff0c;得到想要的图像处理参数。 1. 创建trackbar import cv2 import numpy as npdef nothing(x):passcv2.namedWindow(image) # 创建5个…

永磁材料测试系统主要应用

1. 产品特征 永磁材料测试系统装置具有独立的电参量校准功能。采用慢速减幅方式对样品退磁。超宽范围的电流连续稳定调节。磁通计的积分器零漂和霍尔探头的非线性误差影响小。系统配置连续可调双极性磁化电源&#xff0c;方便样品的磁化与退磁。测量B或J&#xff1a;采用B或J线…

线程安全问题及其解决

文章目录 一. 线程安全问题1.1 线程不安全的例子1.2 线程不安全的原因1.2.1 随即调度, 抢占式执行1.2.2 修改共享数据1.2.3 修改操作非原子性1.2.4 内存可见性1.2.5 指令重排序1.2.6 总结 二. 线程安全问题的解决2.1 synchronized(解决前三个问题)2.1.1 synchronized 的锁是什么…

基于PyTorch搭建你的生成对抗性网络

前言 你听说过GANs吗&#xff1f;还是你才刚刚开始学&#xff1f;GANs是2014年由蒙特利尔大学的学生 Ian Goodfellow 博士首次提出的。GANs最常见的例子是生成图像。有一个网站包含了不存在的人的面孔&#xff0c;便是一个常见的GANs应用示例。也是我们将要在本文中进行分享的…

Apache Pulsar 技术系列 - 基于 Pulsar 的海量 DB 数据采集和分拣

导语 Apache Pulsar 是一个多租户、高性能的服务间消息传输解决方案&#xff0c;支持多租户、低延时、读写分离、跨地域复制、快速扩容、灵活容错等特性。本文是 Pulsar 技术系列中的一篇&#xff0c;主要介绍 Pulsar 在海量DB Binlog 增量数据采集、分拣场景下的应用。 前言…

阿里影业S1财报解读:优质内容叠加整合效益,转动增长飞轮

从《消失的她》到《长安三万里》再到《孤注一掷》&#xff0c;市场对阿里影业半年报好成绩已有所预期。 11月13日&#xff0c;阿里影业发布2023/24半年度业绩。根据财报&#xff0c;报告期内&#xff08;4月1日至9月30日&#xff09;&#xff0c;阿里影业实现收入人民币26.16亿…

深入理解SqueezeSegV3点云分割

文章&#xff1a;Squeezesegv3: Spatially-adaptive convolution for efficient point-cloud segmentation 代码&#xff1a;https://github.com/chenfengxu714/SqueezeSegV3 一、摘要 激光雷达点云分割是许多应用中的一个重要问题。对于大规模点云分割&#xff0c;一般是投…

【算法每日一练]-图论(保姆级教程 篇2(topo排序,并查集,逆元))#topo排序 #最大食物链 #游走 #村村通

今天讲topo排序 目录 题目&#xff1a;topo排序 思路&#xff1a; 题目&#xff1a;最大食物链 解法一&#xff1a; 解法二&#xff1a; 记忆化 题目&#xff1a;村村通 思路&#xff1a; 前言&#xff1a;topo排序专门处理DAG&#xff08;有向无环图&#xff09; 题目…

15个顶级元宇宙游戏

元宇宙游戏是可让数百万玩家在一个虚拟世界中相互互动&#xff0c;允许你按照自己的节奏玩游戏&#xff0c;并根据自己的条件推广自己的品牌。 而且&#xff0c;这些游戏中的大多数都涉及虚拟 NFT&#xff0c;它们是完全独特的和虚拟的。在 Facebook 将品牌重新命名为“Meta”…

Spring 国际化:i18n 如何使用

1、i18n概述 国际化也称作i18n&#xff0c;其来源是英文单词 internationalization的首末字符i和n&#xff0c;18为中间的字符数。由于软件发行可能面向多个国家&#xff0c;对于不同国家的用户&#xff0c;软件显示不同语言的过程就是国际化。通常来讲&#xff0c;软件中的国…

11月第2周榜单丨飞瓜数据B站UP主排行榜榜单(B站平台)发布!

飞瓜轻数发布2023年11月6日-11月12日飞瓜数据UP主排行榜&#xff08;B站平台&#xff09;&#xff0c;通过充电数、涨粉数、成长指数、带货数据等维度来体现UP主账号成长的情况&#xff0c;为用户提供B站号综合价值的数据参考&#xff0c;根据UP主成长情况用户能够快速找到运营…

【JUC】六、辅助类

文章目录 1、CountDownLatch减少计数2、CyclicBarrier循环栅栏3、Semaphore信号灯 本篇整理JUC的几个同步辅助类&#xff1a; 减少计数&#xff1a;CountDownLatch循环栅栏&#xff1a;CyclicBarrier信号灯&#xff1a;Semaphore 1、CountDownLatch减少计数 案例&#xff1a;6…

基于opencv+tensorflow+神经网络的智能银行卡卡号识别系统——深度学习算法应用(含python、模型源码)+数据集(二)

目录 前言总体设计系统整体结构图系统流程图 运行环境模块实现1. 训练集图片处理1&#xff09;数据加载2&#xff09;图像处理 2. 测试图片处理1&#xff09;图像读取2&#xff09;图像处理 相关其它博客工程源代码下载其它资料下载 前言 本项目基于从网络获取的多种银行卡数据…

政府指导89元保330万 “聊惠保”2024年度正式上线!

11月15日&#xff0c;“聊惠保”2024年度启动仪式在聊城市融媒体中心举行。市政府领导&#xff0c;省直、市直相关部门单位和共保体成员单位负责同志参加仪式。“聊惠保”2024年度正式上线&#xff01;“聊惠保”项目组为聊城市医疗救助困难群体捐赠“聊惠保”2024年度团体保险…

python基础练习题库实验八

文章目录 前言题目1代码 题目2代码 题目3代码 总结 前言 &#x1f388;关于python小题库的这模块我已经两年半左右没有更新了&#xff0c;主要是在实习跟考研&#xff0c;目前已经上岸武汉某211计算机&#xff0c;目前重新学习这门课程&#xff0c;也做了一些新的题目 &#x…

LeetCode34-34. 在排序数组中查找元素的第一个和最后一个位置

&#x1f517;:代码随想录:二分查找的算法讲解:有关left<right和left<right的区别 class Solution {public int[] searchRange(int[] nums, int target) {int nnums.length;int l0,hn-1;if(numsnull){return null; }if(n0){return new int[]{-1,-1}; }if(target&l…