描述

利用单链表A表示一个非零整数序列,把A分解为两个具有相同结构的链表B和C,其中B表的结点为A表中值小于零的结点,而C表的结点为A表中值大于零的结点。要求空间复杂度为O(1),链表B和C均利用链表A的结点空间。

输入

多组数据,每组数据有两行,第一行为链表A的长度n,第二行为链表A的n个元素(元素之间用空格分隔)。当n=0时输入结束。

输出

对于每组数据分别输出两行,分别对应链表B和C的元素,每个数据之间用空格分隔。

输入样例 1

7
3 -6 1 -2 4 -3 8
8
2 5 3 -1 -2 2 6 -1
0

输出样例 1

-6 -2 -3
3 1 4 8
-1 -2 -1
2 5 3 2 6

考虑输出格式!!!

考虑输出格式!!!

考虑输出格式!!!

多余的空格和换行符都不要!!!

思路:

尾插实现的时候最后插入完了尾指针=NULL不要忘记设置,不然就会出现该地址不能为read的报错x_x

为了控制输出空格的数量,设置两个全局变量b,c来记录链表元素大于小于零的个数,这个在插入的时候一并实现 。然后在实现两个遍历函数的时候让这两个量每次符合要求时都-1,在不为零之前都控制输出空格。不要忘记每次实现功能后都要把这两个量置零!

#include<string>
#include<iostream>
#include<map>
#include<vector>
#include<set>
#include<algorithm>
using namespace std;
int b = 0, c = 0;
typedef struct LNode
{int data;struct LNode* next;
}*linklist, LNode;
void Init(linklist &l)
{l = new LNode;l->next = NULL;
}
void TailInsert(linklist& l, int n)//尾插法
{l = new LNode;l->next = NULL;linklist rear = l;for (int i = 0; i < n; i++){linklist p = new LNode;cin >> p->data;if (p->data < 0)b++;elsec++;rear->next = p;rear = p;}rear->next = NULL;//不可少的一步
}
void B(linklist l)
{linklist p = l->next;while(p){if (p->data < 0){b--;cout << p->data;if (b != 0)cout << " ";}p = p->next;}cout << endl;
}
void C(linklist l)
{linklist p = l->next;while (p){if (p->data > 0){c--;cout << p->data;if (c != 0)cout << " ";}p = p->next;}cout << endl;
}
int main()
{int n;cin >> n;while (n != 0){linklist l;Init(l);TailInsert(l, n);B(l);C(l);b = 0;c = 0;//千万不要忘了每次都把b,c置零!!cin >> n;}return 0;
}

链表的分解(C++)相关推荐

  1. BJFU_数据结构习题_229链表的分解

    欢迎登录北京林业大学OJ系统 http://www.bjfuacm.com 229链表的分解 描述 利用单链表A表示一个非零整数序列,把A分解为两个具有相同结构的链表B和C,其中B表的结点为A表中值小 ...

  2. 【小f的刷题笔记】(JS)链表 - 单链表的分解 LeetCode86

    [链表] 单链表的分解 LeetCode86 链接: 86.分隔链表 题目: 思路: 1️⃣ 先分开为两个新链表,然后再连成一个 2️⃣ 定义两个哑结点并分别对应两个游标,然后去遍历原始链表 如果小于 ...

  3. SCAU 数据结构 1 单链表分解

    描述 设计算法将一个带头结点的单链表A分解为两个具有头结点的链表B.C,其中B表的结点为A表中值大于等于零的结点, 而C表的结点为A表中值小于零的结点(链表A的元素类型为整型,要求B.C表利用A表的结 ...

  4. 08、单链表编程考点

    单链表编程考点 1.将单链表的第一个结点放在单链表的最后一个结点的后面 /* 设h是无头结点的单链表,如果线性表h的长度不小于2,则将首元结点删除并插入到表尾 将单链表的第一个结点放在单链表的最后一个 ...

  5. 【计算机考研数据结构代码题总结】链表

    1.在带头节点的单链表L中,删除所有值为X的结点,并释放其空间,假设值为X的节点不唯一,试编写算法实现. //单链表 //要放置三个指针,pre指向头结点(p结点的前驱),p指向头结点的下一个结点,q ...

  6. 线性表之链表复习(仅王道单链表题目)

    考研408复习,如发现任何错误,请私聊,不胜感谢 单链表代码已更新完毕. 如下: #include <iostream> #include <algorithm> #inclu ...

  7. BJFU实验一链表部分题解整合

    目录 题目传送门 214.基于链式存储结构的图书信息表的创建和输出 描述 输入 输出 输入样例 1 输出样例 1 AC 代码 AC 代码 215.基于链式存储结构的图书信息表的排序 描述 输入 输出 ...

  8. 王道考研408 数据结构 2.3 链表练习题

    2.3 pre typedef struct Lnode{ElemType data;struct Lnode *next; }LNode,*LinkList; typedef struct DNod ...

  9. 【最详细】数据结构(C语言版 第2版)第二章课后习题答案 严蔚敏 等 编著

    所有章节答案合集-->传送门 第 2 章线性表 1.选择题 ( 1)顺 序表中 第一个 元 素的存储 地址 是 100 ,每 个元素的 长度 为 2,则 第 5 个 元 素 的 地 址 是 ( ...

最新文章

  1. windowsserver2008r2可以装什么模拟器_为什么不可以用塑料桶装汽油?答案就在这!...
  2. c 运算符重载总结
  3. spring boot / cloud (十七) 快速搭建注册中心和配置中心
  4. SimpleDateFormat非线程安全
  5. hbase shell中命令无法删除?
  6. java apk安装路径_android apk安装过程源码解析
  7. 计算机网络按拓扑结构可分为三种基本型,2012年计算机三级网络技术基本概念与名词解释(3)...
  8. php yii 表单title,Yii2.0-ActiveForm表单结构自定义教程
  9. 百度声明:从未答应屏蔽三鹿负面
  10. JS+dom简单运动实现
  11. leetcode之移动零
  12. python基础--函数作用域
  13. django -orm操作总结
  14. Hibernate(2)
  15. (数据结构)约瑟夫环问题——C语言实现
  16. H.264 AVC 编解码标准
  17. (包含每张图片的3DMM系数,可以直接重建出3D人脸)AFLW2000-3D数据库介绍及自带代码使用
  18. C# 获取打印机状态
  19. 证券公司交易系统架构演进探析
  20. 与繁重的工作一起修行

热门文章

  1. 电梯管理php,写字楼物业电梯管理规定
  2. 小汤学编程之JavaEE学习day07——版本控制工具:SVN、GIT
  3. python day3 python基础
  4. 基于ruby环境搭建Redmine
  5. Loj #6060. 「2017 山东一轮集训 Day1 / SDWC2018 Day1」Set
  6. java发送http get请求的两种方式
  7. 算法基础——冒泡与选择排序
  8. Springboot03整合SpringDataJPA访问MySQL数据库
  9. IOS初始化控制器的两种方法
  10. Perfect Appearance NIKE KD 9 PERFORMANCE REVIEW