题意:
有一个整数元素建立的单链表A,设计一个算法,将其拆分成两个链表A 和B,使得链表A中含有所有偶数的结点,B链表中含有所有的奇数结点。且保持原来的相对次序。

单链表的存储结构:

typedef struct LinkList{int data;LinkList * next;}

分析:
这里采用新建链表的方法,而题意要求保持相对次序,所以这里采用尾插法建立单链表
这里可以用原来的单链表A的头结点作为新链表的头结点。所有不用再生成一个新头结点。

思路:
1.定义一个遍历单链表A的指针p,两个尾指针 ra,rb,要生成一个头结点。
2.将尾指针赋值好。头结点也是。
3.通过while循环,条件为p != null ,在循环中,判断是否为偶数,如果是偶数,将该数插入链表A中,再后移,如果是奇数,则插入链表B中,再后移。
4.最后两个链表的最后一个节点都置为空。

C代码实现:

 void Splist(LinkList * &A, LinkList * &B){LinkList * P = A->next,*ra,*rb;  //遍历链表的指针p.两个尾指针。ra = A;B = (LinkList *)malloc(sizeof(LinkList));rb = B;while(p!=null){if(p->data%2 == 0){   //偶数结点ra->next = p;ra = p;p = p->next;}else{               //奇数结点rb->next = p;rb = p;p = p->next;}}ra->next = rb->next = null; //两尾节点指针域置为空。  }

单链表-单链表A拆分为A(偶)和C(奇) (尾插法建表)相关推荐

  1. 二、单链表的头插法建表和尾插法建表

    链式存储结构: 用一组不一定连续的存储单元存储逻辑上相邻的元素,元素间的逻辑关系是由附加的指针域表示的,由此得到的存储结构称为链式存储结构. 单链表(线性链表) 使用链式存储结构表示每个数据元素 ai ...

  2. 单链表——单链表的定义及基本操作(初始化、头插法尾插法建表、查找、插入、删除、判空等)

    文章目录 单链表的定义 单链表上的操作 初始化 建立单链表 头插法建立单链表 尾插法建立单链表 遍历单链表 求单链表的长度 查找操作 按值查找 按位查找 插入操作 删除操作 判空操作 完整代码及实例 ...

  3. 双链表——双链表的定义及其基本操作(初始化、头插法尾插法建表、插入、查找、删除、判空等)

    文章目录 双链表的定义 双链表上的操作 初始化 插入操作 建立双链表 头插法建立双链表 尾插法建立双链表 遍历操作 求双链表的长度 查找操作 按值查找 按位查找 删除操作 判空操作 完整代码及实例 总 ...

  4. 头插法和尾插法建立单链表

    在进行单链表的基本运算之前必须先建立单链表,建立单链表的常用方法有两种:头插法建表和尾插法建表 头插法建表,从一个空表开始,读取字符数组a中的字符,生成新节点,将读取的数据存放到新节点的数据域中,然后 ...

  5. 数据结构__头插法建立单链表、尾插法建立单链表

    单链表定义.头插法建表.尾插法建表 一.单链表的定义   单链表是线性表的链式存储,是指通过一组任意的存储单元来存储线性表中的数据元素. 单链表结构定义为: 其中data为数据域,用来存放数据:nex ...

  6. 创建链表:头插法与尾插法

    两种方法的区别无非是插入的位置: 头插法:新插入结点始终未当前的第一个结点 尾插法:新插入结点始终为当前的最后一个结点 头插法建表 实现代码: //头插法建链表 void HeadCreateList ...

  7. 头插法和尾插法创建链表(有无头结点)

    头插法和尾插法创建链表(有无头结点) 文章目录 头插法和尾插法创建链表(有无头结点) 1 头插法 1.1头插法建表规则: 1.2 头插法建表代码实现 2 尾插法 2.1 尾插法建表规则: 2.2 尾插 ...

  8. 单链表-单链表拆分为A和B链表(尾插法+头插法)

    题意: 设C{a1,b1,a2.b2-an,bn}为一线性表,采用带头结点的单链表hc存放,设计一个就地算法,将其拆分为两个线性表,每个线性表均采用带头结点的单链表存储,使得: A = {a1,a2. ...

  9. 建立单链表(尾插法)

    建立单链表有两种方法, 这里采用头插法. 尾插法含义: 该方法是从一个空表开始,读取数组的元素,生成新节点,将读取的数据放到存放在新节点的数据域中,然后将该节点插入到链表的表头上,直到结束为止. 由于 ...

最新文章

  1. Prometheus 如何做到“活学活用”,大牛总结的避坑指南
  2. Java 多线程编程(锁优化)
  3. 您的用户配置文件没有正确加载
  4. MySQL怎么打开explain_MySQL干货之-利用EXPLAIN优化查询
  5. Mybatis源码阅读(四):核心接口4.2——Executor(下)
  6. 关于操作 ASP.NET Web API的实例
  7. python生成器generator和迭代器Iterator测试
  8. 智能优化算法:黏菌优化算法 - 附代码
  9. Oracle认证/维保技术支持服务找重庆思庄
  10. 计算机操作系统第四版课后全部习题答案
  11. 京瓷打印机m5521cdn_京瓷M5521cdn打印机驱动(京瓷打印机驱动程序)V5.1.2107 最新版...
  12. 排列组合的一些公式及推导
  13. 3D场景建模学习必备的基础知识
  14. 深蓝算法反演AOD入门记录(一)
  15. “跨次元”目标检测模型hold住各种画风,真人赛博恐龙梵高画作都能识别,复旦校友一作,在线Demo可玩...
  16. java面试之Jsp(面试必看)
  17. 5、zookeeper四字监控命令/配置属性
  18. 京东cookie京东ck
  19. c语言的七大查找算法,非常值得学习
  20. 【每天一个 Linux 命令】网络相关命令(ifconfig、route、ping、traceroute、netstat、ss、telnet、rcp、scp)

热门文章

  1. n2n linux,n2n安装
  2. gradle项目 避免每次下载gradle文件/解决依赖下载慢的问题
  3. Linux Bash小结1
  4. MFC 去掉CWnd的边框
  5. 关于Mongodb索引创建的一些体会
  6. Powershell管理系列(二十八)PowerShell操作之修改AD账号密码
  7. boost:进程管理
  8. Linux下清空用户登录记录和命令历史的方法
  9. [转载]数据库设计三大范式应用实例剖析
  10. 跟大家聊聊我们为什么要学习源码?学习源码对我们有用吗?(源码感悟)