1074 Reversing Linked List(链表逆序)

1074 Reversing Linked List (25 分)

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 (≤10​5​​ ) 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

分析

本题考查链表的逆序,注意边界条件。

#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
const int N=100010;
int ad_val[N],val_ad[N],nextAddr[N];
vector<int>v;
int main() {
    int addr,n,k;
    cin>>addr>>n>>k;
    for(int i=0; i<n; i++) {
        int ad,val,nxt;
        cin>>ad>>val>>nxt;
        ad_val[ad]=val;
        val_ad[val]=ad;
        nextAddr[ad]=nxt;
    }
    for(int i=addr; i!=-1; i=nextAddr[i])
        v.push_back(ad_val[i]);
    for(int i=0; i+k<=(int)v.size(); i=i+k)
        reverse(v.begin()+i,v.begin()+i+k);
    for(int i=0; i<(int)v.size()-1; i++)
        printf("%05d %d %05d\n",val_ad[v[i]],v[i],val_ad[v[i+1]]);
    printf("%05d %d -1\n",val_ad[v[v.size()-1]],v[v.size()-1]);
        return 0;
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • rljs by sennchi Timeline of History Part One The Cognitiv...
    sennchi阅读 7,505评论 0 10
  • 图片来源于网络 她没说她在等他,从来都没有,当别人提起那个人的名字的时候,她只是夸张一笑,然后说,“他啊?谁知道会...
    狗子家阅读 472评论 0 0
  • 引言 Jimi大神曾发表过一篇文章https://bihu.com/article/517307,介绍My Fis...
    童_刚阅读 2,723评论 3 4
  • 二连-九排-甜 我还是那个我,但我好像又不是那个我了。 快乐来自哪里 从忙碌的工作中抽出半天逛街,让新衣服给...
    小甘老师甘甜阅读 509评论 3 4