算法学习之路|链表元素分类
给定一个单链表,请编写程序将链表元素进行分类排列,使得所有负值元素都排在非负值元素的前面,而[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,弥补少的那一种情况
}
算法学习之路|链表元素分类相关推荐
- C++学习之路 | PTA乙级—— 1075 链表元素分类 (25 分)(精简)
1075 链表元素分类 (25 分) 给定一个单链表,请编写程序将链表元素进行分类排列,使得所有负值元素都排在非负值元素的前面,而 [0, K] 区间内的元素都排在大于 K 的元素前面.但每一类内部元 ...
- 算法学习之路和程序员(技术)学习必读书籍
原文链接:http://lucida.me/blog/on-learning-algorithms/ 转 算法学习之路和程序员(技术)学习必读书籍 2015年05月26日 09:46:56 阅读数:1 ...
- 巩朋:我的算法学习之路
转自:http://blog.jobbole.com/67348/ 巩朋:我的算法学习之路 分享到: 232 MVC架构模式分析与设计 Linux Guide for Developers 网页广告特 ...
- 拿下斯坦福和剑桥双offer,00后的算法学习之路
董文馨,00后,精通英语,西班牙语.斯坦福大学计算机系和剑桥大学双Offer,秋季将进入斯坦福大学学习. 10岁开始在国外上学:12岁学Scratch: 13岁学HTML & CSS: 14岁 ...
- PAT 乙级 1075 链表元素分类
1075 链表元素分类 (25 point(s)) 给定一个单链表,请编写程序将链表元素进行分类排列,使得所有负值元素都排在非负值元素的前面,而 [0, K] 区间内的元素都排在大于 K 的元素前面. ...
- 1075 链表元素分类
1075 链表元素分类 题目: 给定一个单链表,请编写程序将链表元素进行分类排列,使得所有负值元素都排在非负值元素的前面,而 [0, K] 区间内的元素都排在大于 K 的元素前面.但每一类内部元素的顺 ...
- 完全背包问题贪心算法c语言,数据结构与算法学习之路:背包问题的贪心算法和动态规划算法...
一.背包问题描述: 有N种物品和一个重量为M的背包,第i种物品的重量是w[i],价值是p[i].求解将哪些物品装入背包可使这些物品的费用总和不超过背包重量,且价值总和最大. 二.解决方法: 1.贪心算 ...
- 【区块反转】【链表合并】【反转链表】【链表元素分类】【链表去重】【重排链表】
目录 说明: 1110 区块反转 输入格式: 输出格式: 输入样例: 输出样例: 1105 链表合并 输入格式: 输出格式: 输入样例: 输出样例: 1025 反转链表 输入格式: 输出格式: 输入样 ...
- 算法学习——求有重复元素的全排列(递归)
算法学习--求有重复元素的全排列(递归) 思路:看到这个题目首先能想到的一点就是:①我们要求元素的所有全排列②我们要对求出的全排列去重 第一步:求全排列,这里先讨论对不含重复元素的数组元素进行全排列, ...
最新文章
- 机器学习的5个成功案例
- 随堂小测app冲刺(六)
- MFC获取系统当前时间
- bzoj 3223: Tyvj 1729 文艺平衡树
- QT5对话框的中文字符串【乱码】 (error: C2001: 常量中有换行符)
- Hyperledger Fabric 1.0发布:基于区块链的开源分布式账本
- 如何在 JavaScript 中更好地使用数组
- php having,having方法
- L2-007 家庭房产 (25 分)
- fence_ilo can't connect by ssl, since CentOS 5.8 lack pyOpenSSL
- Tomcat8安装(或卸载重装)
- 今日睡眠质量记录74
- 纹波(ripple)--学习笔记
- 怎么网络同步计算机的本地时间,VBA实现本地计算机时间与网服务器时间的同步...
- 【0049】报错:fe_sendauth: invalid authentication request from server: AUTH_REQ_SASL_CONT without
- ftok函数的作用:
- python中列表中增加逗号,Python 实现在文件中的每一行添加一个逗号
- java 并发: 原子类
- (五)美赛写作篇:Summary官方模板+论文模板
- 复数抽象数据类型及其四则运算 (c++)