zoukankan      html  css  js  c++  java
  • pat02-线性结构1. Reversing Linked List (25)

    02-线性结构1. Reversing Linked List (25)

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

    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
    

    提交代码

     1 #include <cstdio>
     2 #include <cstring>
     3 #include <string>
     4 #include <queue>
     5 #include <stack>
     6 #include <cmath>
     7 #include <iostream>
     8 #include <algorithm>
     9 using namespace std;
    10 struct node{
    11     int now,next,data;
    12 };
    13 node mem[100005];
    14 vector<node> v;
    15 int main(){
    16     //freopen("D:\INPUT.txt","r",stdin);
    17     int h,now,data,next,num,k,temp;
    18     scanf("%d %d %d",&h,&num,&k);
    19     int i;
    20     for(i=0;i<num;i++){
    21         scanf("%d %d %d",&now,&data,&next);
    22         mem[now].now=now;
    23         mem[now].data=data;
    24         mem[now].next=next;
    25     }
    26     now=h;
    27     while(now!=-1){
    28         v.push_back(mem[now]);
    29         now=mem[now].next;
    30     }
    31     int length=v.size();
    32     int round=length/k;
    33     for(i=0;i<round;i++){
    34         reverse(v.begin()+i*k,v.begin()+i*k+k);
    35     }
    36     for(i=0;i<length-1;i++){
    37         printf("%05d %d %05d
    ",v[i].now,v[i].data,v[i+1].now);
    38     }
    39     printf("%05d %d %d
    ",v[i].now,v[i].data,-1);//注意全反的情况
    40     return 0;
    41 }
  • 相关阅读:
    Spring 注解注入—@Qualifier 注释
    Spring基于 @Autowired 和@Required区别与联系
    Spring基于注解@Required配置
    MySQL存储过程---变量的应用
    MySQL存储过程---基础
    MySQL中的变量
    MySQL内置函数-单行函数(流程控制函数)
    MySQL内置函数-版本、用户等函数
    MySQL内置函数-单行函数(字符函数)
    MySQL内置函数-单行函数(日期函数)
  • 原文地址:https://www.cnblogs.com/Deribs4/p/4720817.html
Copyright © 2011-2022 走看看