题意:把链表按规则调整,使小于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的更多相关文章

  1. PAT 1133 Splitting A Linked List[链表][简单]

    1133 Splitting A Linked List(25 分) Given a singly linked list, you are supposed to rearrange its ele ...

  2. PAT 1133 Splitting A Linked List

    Given a singly linked list, you are supposed to rearrange its elements so that all the negative valu ...

  3. PAT1133:Splitting A Linked List

    1133. Splitting A Linked List (25) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Y ...

  4. PAT_A1133#Splitting A Linked List

    Source: PAT A1133 Splitting A Linked List (25 分) Description: Given a singly linked list, you are su ...

  5. PAT-1133(Splitting A Linked List)vector的应用+链表+思维

    Splitting A Linked List PAT-1133 本题一开始我是完全按照构建链表的数据结构来模拟的,后来发现可以完全使用两个vector来解决 一个重要的性质就是位置是相对不变的. # ...

  6. A1133. Splitting A Linked List

    Given a singly linked list, you are supposed to rearrange its elements so that all the negative valu ...

  7. 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 ...

  8. 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 ...

  9. 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 ...

随机推荐

  1. 第11章:最长公共子序列(LCS:Longest Common Subsequence)

    方法:动态规划 <算法导论>P208 最优子结构 + 重叠子问题 设xi,yi,为前i个数(前缀) 设c[i,j]为xi,yi的LCS的长度 c[i,j] = 0 (i ==0 || j ...

  2. Linux下Python安装(脚本全)

    在linux下安装Python: # 下载最新版本 cd /usr/local/src/ sudo wget http://www.python.org/ftp/python/3.3.2/Python ...

  3. 【ccf 2017/12/4】行车路线(dijkstra变形)

    问题描述 小明和小芳出去乡村玩,小明负责开车,小芳来导航. 小芳将可能的道路分为大道和小道.大道比较好走,每走1公里小明会增加1的疲劳度.小道不好走,如果连续走小道,小明的疲劳值会快速增加,连续走s公 ...

  4. 交叉编译工具链介绍《Building Embedded Linux Systems》

    1.前言 配置和编译一个合适的GNU工具链是相对复杂的并且需要很精细的操作,包括你需要对不同软件库之间的依赖关系.它们的各自的任务,不同软件库版本情况都有比较好的了解,编译工具链是一个乏味的工作. 2 ...

  5. Lua基础---流程控制语句

    Lua提供了if语句和if else语句作为流程控制语句,当然,符合C的特点,流程语句之间可以实现嵌套操作,当然流程控制也可以和循环体结合进行控制. 1.if语句 if(布尔表达式) then --[ ...

  6. 专业工具软件PCB板打印说明

    专业工具软件PCB板打印说明 请注意PCB板打印不要直接截图,如下方式是不正确的: 这样在打印为黑白图片时,元器件之间的连线无法看清. 应采用如下模式: ~End~

  7. Golang 编译成 DLL 文件

    golang 编译 dll 过程中需要用到 gcc,所以先安装 MinGW. windows 64 位系统应下载 MinGW 的 64 位版本: https://sourceforge.net/pro ...

  8. R+markdown+LaTeX 中文编译解决方案

    一丢丢前言 很久之前曾试图以Rmarkdown编译pdf文档,无奈怎么鼓捣都会error,搜索了很久都没能找到比较好的解决方案.在配置上将编译器调成了xeLaTeX后就不了了之.这两天心血来潮研究了一 ...

  9. 【python】socket

    UDP udp_server.py from datetime import datetime import socket server_address = ('localhost', 6789) m ...

  10. linux之使用samba实现文件共享

    早期网络想要在不同主机之间共享文件大多要用FTP协议来传输,但FTP协议仅能做到传输文件却不能直接修改对方主机的资料数据,这样确实不太方便,于是便出现了NFS开源文件共享程序,NFS是一个能够将多台L ...