注意:在OJ上提交时不要使用endl,可能会出问题。用\n代替。

描述

已知

  1. 小 g 手里有一个链表。

  2. 小 g 希望手里的链表是按照单调非减的顺序排好的。

  3. 小 g 希望链表中值相同的节点在排完序后相对次序也不会改变。

  4. 小 g 很笨。

聪明的你快来帮帮小 g,实现他的愿望。

输入
第一行为两个整数,分别为小 g 的链表中节点的个数 N (0 ≤ N ≤ 100000),和第一个节点的编号 H (1 ≤ H ≤ N)。
接下来的 N 行中,第 i (1 ≤ i ≤ N) 行包含两个整数,分别为编号为 i 的节点的值 Ai (-10^9 ≤ Ai ≤ 10^9) 和它的下一个节点的编号 Bi (0 ≤ Bi ≤ N)。

约定链表中最后一个节点的下一个节点的编号用 0 表示,且空链表第一个节点编号用 0 表示。

输出
第一行为一个整数,为排序后的链表中第一个节点的编号。
接下来的 N 行中,第 i (1 ≤ i ≤ N) 行包含一个整数,为排序后的链表中编号 i 的节点的下一个节点的编号 Bi’ (0 ≤ Bi’ ≤ N)。

样例输入
3 2
2 3
3 1
1 0

样例输出
3
2
0
1
我的测试用例

20 1
20 2
19 3
18 4
17 5
16 6
15 7
14 8
13 9
12 10
11 11
11 12
11 13
11 14
11 15
11 16
11 17
11 18
11 19
11 20
11 0

输出结果(是对的吧)

10
0
1
2
3
4
5
6
7
8
11
12
13
14
15
16
17
18
19
20
9

代码

只通过了自己的测试用例,没通过OJ

#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
class Node
{public:int num;int value;int next;
};int mysort(Node a1, Node a2)
{return(a1.value < a2.value);
}int main()
{int total, first;cin >> total >> first;//空链表检测if (total == 0){cout << '0';return 0;}//原链表vector<Node> linklist;Node tNode;int i;for (i = 0; i < total; i++){tNode.num = i + 1;cin >> tNode.value >> tNode.next;tNode.next = 0;//此数据无用置零linklist.push_back(tNode);}//复制vector<Node> resultlist(linklist);//排序stable_sort(linklist.begin(), linklist.end(), mysort);//填写int j;for (i = 0; i < total; i++){resultlist[linklist[i].num - 1].next = (i + 1 < total ? linklist[i + 1].num : 0);}//输出cout << linklist[0].num << endl;for (i = 0; i < total; i++){cout << resultlist[i].next << '\n';}cout << endl;system("pause");return 0;
}

ACM练习 链表排序 II 【WA】相关推荐

  1. 冒泡链表排序java_链表排序(冒泡、选择、插入、快排、归并、希尔、堆排序)...

    以下排序算法的正确性都可以在LeetCode的链表排序这一题检测.本文用到的链表结构如下(排序算法都是传入链表头指针作为参数,返回排序后的头指针) struct ListNode { int val; ...

  2. 链表排序(冒泡、选择、插入、快排、归并、希尔、堆排序)

    这篇文章分析一下链表的各种排序方法. 以下排序算法的正确性都可以在LeetCode的链表排序这一题检测.本文用到的链表结构如下(排序算法都是传入链表头指针作为参数,返回排序后的头指针) struct ...

  3. 单链表排序----快排 归并排序

    单链表排序----快排 & 归并排序 原文:http://blog.csdn.net/u012658346/article/details/51141288 题目描述:  给定一个乱序的单链表 ...

  4. 链表排序(C语言)选择排序

    #include <stdio.h> #include <stdlib.h> #include <time.h> //用到了time函数#define arrayS ...

  5. Lintcode 167. 链表求和 221. 链表求和 II 题解

    167. 链表求和 描述 你有两个用链表代表的整数,其中每个节点包含一个数字.数字存储按照在原来整数中相反的顺序,使得第一个数字位于链表的开头.写出一个函数将两个整数相加,用链表形式返回和. 样例 给 ...

  6. 链表的各种操作实现 链表逆序 链表排序 有序链表归并 链表存在环的判定

    链表的各种操作实现 链表逆序 链表排序 有序链表归并 链表存在环的判定 链表基本操作实现 c语言版本, 该程序在visual c++ 6.0上调试通过! 本人写该程序完全是为学习交流之用,还望大家多多 ...

  7. STL 中的链表排序

    一直以来学习排序算法, 都没有在链表排序上下太多功夫,因为用得不多.最近看STL源码,才发现,原来即使是链表,也能有时间复杂度为O(nlogn)的算法, 大大出乎我的意料之外,一般就能想到个插入排序. ...

  8. leetcode 148 --- 链表排序

    1 题目 链表排序 2 解法 2.1 冒泡排序 /*** struct ListNode {* int val;* struct ListNode *next;* };*/class Solution ...

  9. 一步一步写算法(之链表排序)

    [ 声明:版权所有,欢迎转载,请勿用于商业用途.  联系信箱:feixiaoxing @163.com] 相比较线性表的排序而言,链表排序的内容稍微麻烦一点.一方面,你要考虑数据插入的步骤:另外一方面 ...

最新文章

  1. Activiti 笔记
  2. rbac 一个用户对应多个账号_电商后台系统:管理后台之账号管理(一)
  3. js返回上一页并刷新代码整理
  4. 个子矮s弯如何看点打方向图解_S弯如何看点打方向
  5. android 编译器有问题,Android Studio 3.0 Beta 2发布:解决编译器bug
  6. 惊呆了!这篇论文全文都是脏话,可编辑部居然对它评价极佳并发表了!
  7. 5月份,我居然发了这么多文章?我果然无聊.
  8. R_Studio模拟学生成绩对数据简单分析
  9. c语言误差椭圆,平差计算
  10. vmware 无法安装 (出现原因及解决办法)
  11. 使用srvany.exe把程序安装成windows服务
  12. Java岗大厂面试百日冲刺 - 日积月累,每日三题【Day29】
  13. Python 用plt做动画
  14. 服务器中心地址,互联网时间同步服务器地址(国家授时中心服务器)
  15. 域环境批量推送OUTLOOK签名
  16. 怎么查找无线的dns服务器,无线找不到服务器dns地址
  17. 废土行动最新服务器机柜销售,《废土行动》避难所 你想要知道的信息我们一次都告诉你...
  18. 字节-测试开发-面试
  19. VLookup怎么用详细步骤?VLookup函数的使用方法及实例
  20. Spring中两种编程式事务管理

热门文章

  1. HDU - 3804 Query on a tree(树链剖分+线段树+离线处理)
  2. Shell函数:Shell函数返回值、删除函数、在终端调用函数
  3. 从 301 跳转,聊聊边缘规则的那些小妙用
  4. Python selenium对js元素进行增删改查操作
  5. Python 让所有奇数都在偶数前面,而且奇数升序排列,偶数降序排序
  6. 深入理解TCP实现|经典PDF分享
  7. 经典动态规划:0-1 背包问题
  8. 二叉树和栈的基本操作
  9. 【线上圆桌整理 - 微软】后疫情时代现代化办公新趋势
  10. LiveVideoStack 2021招聘季