1133 Splitting A Linked List
题意:把链表按规则调整,使小于0的先输出,然后输出键值在[0,k]的,最后输出键值大于k的。
思路:利用vector<Node> v,v1,v2,v3。遍历链表,把小于0的push到v1中,把[0,k]的push到v2中,把大于k的push到v3中,最后把v1,2,3中的按顺序push到v中,在顺序输出v就好了。【注意点】:给出的n个结点不一定都是链表的结点,我在第一遍做的时候,在最后遍历v输出结果时,for循环写成了 ;i<n;i++) ,因为我想链表的结点个数不就是n嘛,结果有一个测试点过不去,想了许久才发现这个坑,在做链表类型的题时,这个坑一定引起重视,又如1052 Linked List Sorting。
代码:
#include <cstdio>
#include <vector>
using namespace std;
;
struct Node{
int data;
int addr,next;
}LinkList[maxn];
int main()
{
int head,n,k;
scanf("%d%d%d",&head,&n,&k);
int addr,data,next;
;i<n;i++){
scanf("%d%d%d",&addr,&data,&next);
LinkList[addr].addr=addr;
LinkList[addr].data=data;
LinkList[addr].next=next;
}
vector<Node> v1,v2,v3,v;
int p=head;
){
) v1.push_back(LinkList[p]);
else if(LinkList[p].data>k) v3.push_back(LinkList[p]);
else v2.push_back(LinkList[p]);
p=LinkList[p].next;
}
for(auto it:v1) v.push_back(it);
for(auto it:v2) v.push_back(it);
for(auto it:v3) v.push_back(it);
;i<v.size();i++){//注意这里不能写成i<n!!!
) printf(].addr);
else printf("%05d %d -1\n",v[i].addr,v[i].data);
}
;
}
1133 Splitting A Linked List的更多相关文章
- PAT 1133 Splitting A Linked List[链表][简单]
1133 Splitting A Linked List(25 分) Given a singly linked list, you are supposed to rearrange its ele ...
- PAT 1133 Splitting A Linked List
Given a singly linked list, you are supposed to rearrange its elements so that all the negative valu ...
- PAT1133:Splitting A Linked List
1133. Splitting A Linked List (25) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Y ...
- PAT_A1133#Splitting A Linked List
Source: PAT A1133 Splitting A Linked List (25 分) Description: Given a singly linked list, you are su ...
- PAT-1133(Splitting A Linked List)vector的应用+链表+思维
Splitting A Linked List PAT-1133 本题一开始我是完全按照构建链表的数据结构来模拟的,后来发现可以完全使用两个vector来解决 一个重要的性质就是位置是相对不变的. # ...
- A1133. Splitting A Linked List
Given a singly linked list, you are supposed to rearrange its elements so that all the negative valu ...
- PAT A1133 Splitting A Linked List (25 分)——链表
Given a singly linked list, you are supposed to rearrange its elements so that all the negative valu ...
- PAT甲级——A1133 Splitting A Linked List【25】
Given a singly linked list, you are supposed to rearrange its elements so that all the negative valu ...
- PAT A1133 Splitting A Linked List (25) [链表]
题目 Given a singly linked list, you are supposed to rearrange its elements so that all the negative v ...
随机推荐
- 第11章:最长公共子序列(LCS:Longest Common Subsequence)
方法:动态规划 <算法导论>P208 最优子结构 + 重叠子问题 设xi,yi,为前i个数(前缀) 设c[i,j]为xi,yi的LCS的长度 c[i,j] = 0 (i ==0 || j ...
- Linux下Python安装(脚本全)
在linux下安装Python: # 下载最新版本 cd /usr/local/src/ sudo wget http://www.python.org/ftp/python/3.3.2/Python ...
- 【ccf 2017/12/4】行车路线(dijkstra变形)
问题描述 小明和小芳出去乡村玩,小明负责开车,小芳来导航. 小芳将可能的道路分为大道和小道.大道比较好走,每走1公里小明会增加1的疲劳度.小道不好走,如果连续走小道,小明的疲劳值会快速增加,连续走s公 ...
- 交叉编译工具链介绍《Building Embedded Linux Systems》
1.前言 配置和编译一个合适的GNU工具链是相对复杂的并且需要很精细的操作,包括你需要对不同软件库之间的依赖关系.它们的各自的任务,不同软件库版本情况都有比较好的了解,编译工具链是一个乏味的工作. 2 ...
- Lua基础---流程控制语句
Lua提供了if语句和if else语句作为流程控制语句,当然,符合C的特点,流程语句之间可以实现嵌套操作,当然流程控制也可以和循环体结合进行控制. 1.if语句 if(布尔表达式) then --[ ...
- 专业工具软件PCB板打印说明
专业工具软件PCB板打印说明 请注意PCB板打印不要直接截图,如下方式是不正确的: 这样在打印为黑白图片时,元器件之间的连线无法看清. 应采用如下模式: ~End~
- Golang 编译成 DLL 文件
golang 编译 dll 过程中需要用到 gcc,所以先安装 MinGW. windows 64 位系统应下载 MinGW 的 64 位版本: https://sourceforge.net/pro ...
- R+markdown+LaTeX 中文编译解决方案
一丢丢前言 很久之前曾试图以Rmarkdown编译pdf文档,无奈怎么鼓捣都会error,搜索了很久都没能找到比较好的解决方案.在配置上将编译器调成了xeLaTeX后就不了了之.这两天心血来潮研究了一 ...
- 【python】socket
UDP udp_server.py from datetime import datetime import socket server_address = ('localhost', 6789) m ...
- linux之使用samba实现文件共享
早期网络想要在不同主机之间共享文件大多要用FTP协议来传输,但FTP协议仅能做到传输文件却不能直接修改对方主机的资料数据,这样确实不太方便,于是便出现了NFS开源文件共享程序,NFS是一个能够将多台L ...