反序链表

原题:

Given a constant K and a singly linked list L, you are supposed to reverse the links of every K elements on L. For example, given L being 1→2→3→4→5→6, if K = 3, then you must output 3→2→1→6→5→4; if K = 4, you must output 4→3→2→1→5→6.

Input Specification:

Each input file contains one test case. For each case, the first line contains the address of the first node, a positive N (<= 105) which is the total number of nodes, and a positive K (<=N) which is the length of the sublist
to be reversed. The address of a node is a 5-digit nonnegative integer, and NULL is represented by -1.

Then N lines follow, each describes a node in the format:

Address Data Next

where Address is the position of the node, Data is an integer, and Next is the position of the next node.

Output Specification:

For each case, output the resulting ordered linked list. Each node occupies a line, and is printed in the same format as in the input.

Sample Input:

00100 6 4

00000 4 99999

00100 1 12309

68237 6 -1

33218 3 00000

99999 5 68237

12309 2 33218

Sample Output:

00000 4 33218

33218 3 12309

12309 2 00100

00100 1 99999

99999 5 68237

68237 6 -1

/*
给定一个常数K和单链表L,你应该反序到K的链表节点。
例如,给定 L 为 1→2→3→4→5→6
如 K = 3, 你必须输出 3→2→1→6→5→4
如 K = 4,你必须输出 4→3→2→1→5→6

输入:
每个输入文件包含一个测试用例。对于每个用例,第一行分别包含:
1)一个首节点地址
2)一个正数N(<=10^5,表示节点总数)
3)一个正数K(<N,需反序的子序列长度)
每个节点的位置由5位非负整数组成,如为NULL则用-1表示

接下来的N行,每行用如下格式表示一个节点:
Address(节点位置)  Data(整数)  Next(下一节点位置)

输出:
对于每个用例,输出结果链表。每个节点占一行,用和输入格式相同的方式输出

输入示例:

00100 6 4
00000 4 99999
00100 1 12309
68237 6 -1
33218 3 00000
99999 5 68237
12309 2 33218  即:1→2→3→4→5→6(N=6,K=4)

输出示例:

00000 4 33218
33218 3 12309
12309 2 00100
00100 1 99999
99999 5 68237
68237 6 -1     即:4→3→2→1→5→6

时间限制
400 ms
内存限制
65536 kB
代码长度限制
8000 B
判题程序
Standard
作者
CHEN, Yue

分析:使用箱子排序思想,尽可能减少查找时间
*/
时间: 2025-01-02 00:14:44

反序链表的相关文章

[C++]LeetCode: 108 Add Two Numbers (反序链表求和)

题目: You are given two linked lists representing two non-negative numbers. The digits are stored in reverse order and each of their nodes contain a single digit. Add the two numbers and return it as a linked list. Input: (2 -> 4 -> 3) + (5 -> 6 -&

反序单向链表

菜菜……我的想法:让后者的next连接前者…… 1 #include <stdio.h> 2 #include <stdlib.h> 3 4 struct List 5 { 6 int number; 7 struct List * next; 8 }; 9 10 struct List * reverse(struct List * head); 11 12 int main(void) 13 { 14 struct List * current, * temp; 15 stru

Java 实现单链表反序

//单链表反序 public class SingleLinkedListReverse { public static void main(String[] args) { Node head = new Node(0); Node temp = null; Node cur = null; for (int i = 1; i <= 10; i++) { temp = new Node(i); if (i == 1) { head.setNext(temp); } else { cur.set

给定一整型数组,若数组中某个下标值大的元素值小于某个下标值比它小的元素值,称这是一个反序

[问题] 找出反序的个数 给定一整型数组,若数组中某个下标值大的元素值小于某个下标值比它小的元素值,称这是一个反序. 即:数组a[]; 对于i < j 且 a[i] > a[j],则称这是一个反序. 给定一个数组,要求写一个函数,计算出这个数组里所有反序的个数. [代码] #include <stdio.h> #include <stdlib.h> #include <string.h> int sumNum = 0; void merge(int *a,

【字符串处理算法】将输入字符串中的各个单词反序的算法设计及C代码实现

一.需求描述 输入一个字符串,编写程序将该字符串中的各个单词反序拼装并输出.例如,如果输入的字符串是"Hello, how do you do",那么输出的字符串为"do you do how Hello,".注意保留各个单词之间的空格及相应的标点符号. 二.算法设计 通过观察示例字符串(即"Hello, how do you do"),我们可以看到该字符串中各个单词与空格之间的关系为:单词总数=空格总数+1.也就是说,示例字符串中的空格总数为4

oc之数组反序输出示例

1. // 反序迭代器(从尾部开始遍历元素) NSEnumerator *enumerator = [array reverseObjectEnumerator]; // allObjects是取出没有被遍历过的对象 NSArray *array2 = [enumerator allObjects]; NSLog(@"array2:%@", array2); 2. NSArray *sortarr=[arr sortedArrayUsingSelector:@selector(clas

SortedDictionary&lt;TKey,TValue&gt;正序与反序排序

SortedDictionary<TKey,TValue>能对字典排序 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace SortDictionary { class Program { static void Main(string[] args) { TestDictionarySort()

(练手备忘)汇编实现将输入的字符串中的空格去掉后反序输出

功能:任意输入一个字符串,去掉其中的空格后反序输出 注:使用 int 21h 里的 0AH 功能 输入一个字符串时,字符串的第一个字节存储的是字符串的最大长度,第二个字节存储的是实际读入字符的个数 编译器使用的是MASMPlus ;#Mode = DOS MAXLEN = 64 ;设置字符串的最大长度 SPACE = ' ' ;空格 datasg segment buffer db MAXLEN+1,0,MAXLEN+1 dup(0) ;字符串输入缓冲区 string db MAXLEN+3 d

treemap反序输出 逆序输出 输出倒数几个值

treemap是按键的ASCII码从小到大排序的,比如要对若干个带有时间属性的对象排序时,可以用时间作键,放到Treemap中,即是有序集合了.先不管性能,省了很多自己写排序的实现了. 默认是按key的ASCII码顺序由小到大排序的,如果要实现自定义的排序,则要重写treemap的比较器. 最简单的方法就是使用集合对象自带的方法,Collections.reverseOrder() 具体代码如下 package com.example.commonwtf2.test; import java.u