给定一个单链表,请编写程序将链表元素进行分类排列,使得所有负值元素都排在非负值元素的前面,而[0, K]区间内的元素都排在大于K的元素前面。但每一类内部元素的顺序是不能改变的。例如:给定链表为 18→7→-4→0→5→-6→10→11→-2,K为10,则输出应该为 -4→-6→-2→7→0→5→10→18→11。

输入格式

每个输入包含1个测试用例。每个测试用例第1行给出:第1个结点的地址;结点总个数,即正整数N (<= 105);以及正整数K (<=1000)。结点的地址是5位非负整数,NULL地址用-1表示。

接下来有N行,每行格式为:

Address Data Next

其中Address是结点地址;Data是该结点保存的数据,为[-105, 105]区间内的整数;Next是下一结点的地址。题目保证给出的链表不为空。

输出格式:

对每个测试用例,按链表从头到尾的顺序输出重排后的结果链表,其上每个结点占一行,格式与输入相同。

输入样例:
00100 9 10
23333 10 27777
00000 0 99999
00100 18 12309
68237 -6 23333
33218 -4 00000
48652 -2 -1
99999 5 68237
27777 11 48652
12309 7 33218
输出样例:
33218 -4 68237
68237 -6 48652
48652 -2 12309
12309 7 00000
00000 0 99999
99999 5 23333
23333 10 00100
00100 18 27777
27777 11 -1
解题思路:

利用map.first模拟链表的地址,

创建一个结构体,作为map.second,

保存链表的值已经链表的next地址。

map模拟出一个链表,然后依据题目的意思解题即可。

详情如下:

#include<iostream>
#include<map>
using namespace std;
struct node{int score;string next;
};
int main(){map<string,struct node> v;string start;int n;int range;cin>>start>>n>>range;string b;int s;string nex;for(int i=0;i<n;i++){cin>>b>>s>>nex;v[b].score=s;v[b].next=nex;}int flag=0;for(string i=start;i!="-1";i=v[i].next){if(v[i].score<0){if(flag==0){cout<<i<<" "<<v[i].score<<" ";flag=1;}else{cout<<i<<endl;cout<<i<<" "<<v[i].score<<" ";}}}//少了一种情况。for(string i=start;i!="-1";i=v[i].next){if(v[i].score>=0&&v[i].score<=range){if(flag==0){cout<<i<<" "<<v[i].score<<" ";flag=1;}else{cout<<i<<endl;cout<<i<<" "<<v[i].score<<" ";}}}//少了一种情况for(string i=start;i!="-1";i=v[i].next){if(v[i].score>range){if(flag==0){cout<<i<<" "<<v[i].score<<" ";flag=1;}else{cout<<i<<endl;cout<<i<<" "<<v[i].score<<" ";}}}cout<<"-1";//OK,弥补少的那一种情况
}

算法学习之路|链表元素分类相关推荐

  1. C++学习之路 | PTA乙级—— 1075 链表元素分类 (25 分)(精简)

    1075 链表元素分类 (25 分) 给定一个单链表,请编写程序将链表元素进行分类排列,使得所有负值元素都排在非负值元素的前面,而 [0, K] 区间内的元素都排在大于 K 的元素前面.但每一类内部元 ...

  2. 算法学习之路和程序员(技术)学习必读书籍

    原文链接:http://lucida.me/blog/on-learning-algorithms/ 转 算法学习之路和程序员(技术)学习必读书籍 2015年05月26日 09:46:56 阅读数:1 ...

  3. 巩朋:我的算法学习之路

    转自:http://blog.jobbole.com/67348/ 巩朋:我的算法学习之路 分享到: 232 MVC架构模式分析与设计 Linux Guide for Developers 网页广告特 ...

  4. 拿下斯坦福和剑桥双offer,00后的算法学习之路

    董文馨,00后,精通英语,西班牙语.斯坦福大学计算机系和剑桥大学双Offer,秋季将进入斯坦福大学学习. 10岁开始在国外上学:12岁学Scratch: 13岁学HTML & CSS: 14岁 ...

  5. PAT 乙级 1075  链表元素分类

    1075 链表元素分类 (25 point(s)) 给定一个单链表,请编写程序将链表元素进行分类排列,使得所有负值元素都排在非负值元素的前面,而 [0, K] 区间内的元素都排在大于 K 的元素前面. ...

  6. 1075 链表元素分类

    1075 链表元素分类 题目: 给定一个单链表,请编写程序将链表元素进行分类排列,使得所有负值元素都排在非负值元素的前面,而 [0, K] 区间内的元素都排在大于 K 的元素前面.但每一类内部元素的顺 ...

  7. 完全背包问题贪心算法c语言,数据结构与算法学习之路:背包问题的贪心算法和动态规划算法...

    一.背包问题描述: 有N种物品和一个重量为M的背包,第i种物品的重量是w[i],价值是p[i].求解将哪些物品装入背包可使这些物品的费用总和不超过背包重量,且价值总和最大. 二.解决方法: 1.贪心算 ...

  8. 【区块反转】【链表合并】【反转链表】【链表元素分类】【链表去重】【重排链表】

    目录 说明: 1110 区块反转 输入格式: 输出格式: 输入样例: 输出样例: 1105 链表合并 输入格式: 输出格式: 输入样例: 输出样例: 1025 反转链表 输入格式: 输出格式: 输入样 ...

  9. 算法学习——求有重复元素的全排列(递归)

    算法学习--求有重复元素的全排列(递归) 思路:看到这个题目首先能想到的一点就是:①我们要求元素的所有全排列②我们要对求出的全排列去重 第一步:求全排列,这里先讨论对不含重复元素的数组元素进行全排列, ...

最新文章

  1. 机器学习的5个成功案例
  2. 随堂小测app冲刺(六)
  3. MFC获取系统当前时间
  4. bzoj 3223: Tyvj 1729 文艺平衡树
  5. QT5对话框的中文字符串【乱码】 (error: C2001: 常量中有换行符)
  6. Hyperledger Fabric 1.0发布:基于区块链的开源分布式账本
  7. 如何在 JavaScript 中更好地使用数组
  8. php having,having方法
  9. L2-007 家庭房产 (25 分)
  10. fence_ilo can't connect by ssl, since CentOS 5.8 lack pyOpenSSL
  11. Tomcat8安装(或卸载重装)
  12. 今日睡眠质量记录74
  13. 纹波(ripple)--学习笔记
  14. 怎么网络同步计算机的本地时间,VBA实现本地计算机时间与网服务器时间的同步...
  15. 【0049】报错:fe_sendauth: invalid authentication request from server: AUTH_REQ_SASL_CONT without
  16. ftok函数的作用:
  17. python中列表中增加逗号,Python 实现在文件中的每一行添加一个逗号
  18. java 并发: 原子类
  19. (五)美赛写作篇:Summary官方模板+论文模板
  20. 复数抽象数据类型及其四则运算 (c++)

热门文章

  1. WI-FI无线数据解密
  2. NSIS 的 Modern UI 教程(二)
  3. 好品山东谋定产业扶贫-农业大健康·万祥军:乡村振兴行动
  4. 域创实业谋定功能性-农业大健康·万祥军:借创新引领潮流
  5. 中级程序员教程-Cache映像技术
  6. DottextHelper使用方法?
  7. 纯干货:如何高效的进行需求管理?
  8. 咖友:打个雷啊 | 今日头条VS腾讯新闻:让马化腾也坐不住的新闻资讯行业未来之争...
  9. 猎豹产品经理:「全球化产品」应该要避开的几个坑
  10. 12306被喷谁受益?带着正能量重新设计12306防黄牛购票机制