ToB企服应用市场:ToB评测及商务社交产业平台

标题: 1074 Reversing Linked List 25 [打印本页]

作者: 徐锦洪    时间: 2024-12-6 15:50
标题: 1074 Reversing Linked List 25
 

 

  1. #include <cstdio>
  2. const int maxn = 100010;
  3. struct Node{
  4.     int address, data, next;
  5. }nodes[maxn];
  6. int main() {
  7.     int head,n,k;
  8.     scanf("%d%d%d", &head, &n, &k);
  9.     int add;
  10.     for(int i = 0; i < n; i++){
  11.         scanf("%d", &add);
  12.         scanf("%d%d", &nodes[add].data, &nodes[add].next);
  13.         nodes[add].address = add;
  14.     }
  15.     //有效节点数目
  16.     int v = head;
  17.     int num = 1;
  18.     while(nodes[v].next != -1){
  19.         num++;
  20.         v = nodes[v].next;
  21.     }
  22.    
  23.     int heads[maxn];
  24.     int tails[maxn];
  25.    
  26.     int next;
  27.     int pre = head;
  28.     int cur = nodes[head].next;
  29.     int curHead = head;
  30.     int times = num / k;
  31.     for(int i = 0; i < times; i++){
  32.         tails[i] = curHead;
  33.         int s = 1;
  34.         while(s < k){
  35.             next = nodes[cur].next;
  36.             nodes[cur].next = pre;
  37.             pre = cur;
  38.             cur = next;
  39.             s++;
  40.         }
  41.         heads[i] = pre;
  42.         curHead = cur;
  43.         pre = cur;
  44.         cur = nodes[cur].next;
  45.     }
  46.     nodes[tails[times-1]].next = curHead;
  47.     for(int i = 0; i < times-1; i++){
  48.         nodes[tails[i]].next = nodes[heads[i+1]].address;
  49.     }
  50.     int ans = heads[0];
  51.     while(nodes[ans].next != -1){
  52.         printf("%05d %d %05d\n", nodes[ans].address, nodes[ans].data, nodes[ans].next);
  53.         ans = nodes[ans].next;
  54.     }
  55.     printf("%05d %d -1\n", nodes[ans].address, nodes[ans].data);
  56.     return 0;
  57. }
复制代码


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4