链表分割:

以给定值x为基准将链表分割成两部分,所有小于x的结点排在大于或等于x的结点之前,注意:数据的顺序不改变。

代码实现:

链表的定义:

typedef int SListDataType;
typedef struct  SListNode {SListDataType    value;  // 保存的值struct SListNode* next;  // 保存下一个结点的地址
} SListNode;typedef struct SHead {SListNode*    first;
}SHead;

链表分割的实现:

//编写代码,以给定值x为基准将链表分割成两部分,所有小于x的结点排在大于或等于x的结点之前
SListNode* compaerSListNode(SHead* s, SListDataType date) { //date作为基准值//创建两个链表SListNode* small=NULL;  //放小的SListNode* sl = NULL; //小链表的最后一个结点SListNode* big=NULL;   //放大的SListNode* bl = NULL; //大链表的最后一个结点//这时候开始比较//利用遍历原链表和基准值比,比较一个放一个SListNode* cur = s->first;for (cur = s->first; cur->next != NULL;cur=cur->next) {if (cur->value<date) { //小于//这时候要注意单单只是这样的赋值,后面再来就覆盖了,所以我们要加一个标准if (sl->next==NULL) {   //刚开始插入的时候small = sl = cur;}else {    //后续插入的时候sl->next = cur;    //最后一个后面插入sl = cur;    //改变最后一个结点位置}}//大链表下面同理else {if (bl->next == NULL) {   //刚开始插入的时候big = bl = cur;}else {  //后续插入的时候bl->next = cur;    //最后一个后面插入bl = cur;    //改变最后一个结点位置}}}//遍历结束开始合并两个链表if (sl != NULL) {sl->next = big;}//合并结束注意大链表的结尾还没有指向NULL if (bl != NULL) {bl->next = NULL;}//还没结,如果小的最后一个结点是空呢?也就是所有的值都比基准值大,这个判断条件里没有。if (sl == NULL) {  //这时候返回大链表就好了return big;}else {return small;    //因为我们把大链表接在链表之后的,所以返回small}
}

链表:链表分割问题:以给定值x为基准将链表分割成两部分,所有小于x的结点排在大于或等于x的结点之前相关推荐

  1. 链表面试题2:编写代码,以给定值x为基准将链表分割成两部分,所有小于x的结点排在大于或等于x的结点之前

    我们可以,用两个新链表,一个存比基准值大的,另一个存比基准值小的.然后再拼接在一起. 用尾插的方法,首先说小的,创建两个指针,一个头,一个尾,再创建个指针跑链表,扫描每一个结点,如果里的值小,存入小链 ...

  2. 以给定值x为基准将链表分割成两部分

    分析: 题目要求将链表以x为基准分成两部分,但并不是真的将链表分成两个链表,同时在分割后,不能改变原先链表的顺序,具体分析步骤如下: 首先我们定义一个cur去遍历链表的每一个节点,找出所有小于x的结点 ...

  3. 以给定值x为基准将单链表分割为两部分,所有小于x的结点都排在大于或等于x的结点之前。

    #include "LinkList.cpp"                //现单链表的各种基本运算的算法文件单链表的基本运算算法_yyy_zxc的博客-CSDN博客 void ...

  4. 单链表-删除并释放以L为表头指针的单链表的所有结点(双指针法)

    单链表的存储结构: typedef struct LinkList{int data;LinkList * next;} 分析: 要删除所有结点,怎么删除? 往往都要定义前后指针 pre ,p 毕竟一 ...

  5. 建立一个按年龄排序的有序链表,每个结点包括学号、姓名、性别、年龄。建立一个新的结点,通过年龄将此结点插入到链表中去,使之仍然有序

    <程序设计基础实训指导教程-c语言> ISBN 978-7-03-032846-5 p143 7.1.2 上级实训内容 [实训内容12]建立一个按年龄排序的有序链表,每个结点包括学号.姓名 ...

  6. 链表是否带环、环入口、环长度、链表相交问题分析与总结

    关于链表的知识总结,参考原博客:http://www.cnblogs.com/hellogiser/p/linked-list-loop-and-intersections.html 一.链表是否带环 ...

  7. 设某链表中最常用的操作是在链表的尾部_Redis系列(二)底层数据结构之双端链表...

    前言 定义 优劣 双向链表 无环链表 带有头指针和尾指针 带有长度计数器 总结 参考文章 联系我 前言 Redis 已经是大家耳熟能详的东西了,日常工作也都在使用,面试中也是高频的会涉及到,那么我们对 ...

  8. python链表和树实验报告_关于Python实现树结构和链表结构的一点想法

    关于Python实现树结构和链表结构的一点想法 Python由于内置的数据结构具有很高的灵活性,所以可以用很多种方式来构建树.图.链表等结构 1. 树的Python实现 python自然可以使用cla ...

  9. C语言 用链表对学号进行排序,求解C语言中建立一个对链表按照学号进行排序的问题...

    ========================== 功能:选择排序(由小到大) 返回:指向链表表头的指针 ========================== */ /* 选择排序的基本思想就是反复 ...

最新文章

  1. python三步实现人脸识别
  2. 【原】iOS学习之UITabBar的隐藏
  3. LSTM神经网络 和 GRU神经网络
  4. JAVA中int、String的类型转换(亲测)
  5. Linux C高级编程——文件操作之系统调用
  6. 写html前端代码的软件_html用什么软件编写
  7. android app源码大全_Android秋招秘籍,看我如何搞定BAT,Vivo,爱奇艺
  8. java网络编程1、2章习题
  9. Windows 10通过本地镜像离线安装.NET 3.5
  10. snmp是什么层协议_计算机网络基础:TCP/IP协议相关知识笔记?
  11. 串口读取gps信息php,Linux串口读取GPS数据
  12. Java 图标logo的由来
  13. XJOI一级二段题解(g++,即C++),也可视作C++算法竞赛教程
  14. 通过终端安装dmg或者pkg文件
  15. “脑科学”已成大国“必争之地” 看各国都亮哪些大招 | 2030年中国脑计划将闯入“终极疆域” 脑科学将成为大国必争之地
  16. android apk 重新签名工具,安卓apk重新签名教程,快来定制自己的apk吧
  17. MeanTeacher论文学习笔记
  18. 融创年报再获佳绩,“地产+”业务快速崛起,融创天花板在哪里?
  19. 怎么提高编程能力?逻辑思维能力?
  20. [精品教程,新老鸟必读]:极限装机、优化全攻略(新手优化教程)

热门文章

  1. 凤凰系统安装教程(与系统盘共存)
  2. 有关神经网络的训练算法,神经网络训练计算器app
  3. 什么是Docker?Docker安装及镜像、容器的基本命令实验+理论!!!
  4. mscs win10专业版、家庭版 credssp 加密 oracle 修正处理
  5. httphandler java_HttpModule与HttpHandler详解
  6. FACTS与STATCOM(灵活交流输电系统与静止同步补偿器)
  7. 利用机器学习识别验证码(从0到1)
  8. 微软推送补丁的服务器叫什么,这次就两个!微软推送9月安全补丁
  9. DID会固定年份吗_双重差分(DID)操流程及代码
  10. 昆仑通态通讯ABB ACS510变频器恒压供水触摸屏通讯程序