1025. 反转链表 (25)

来源:互联网 发布:淘宝折扣卷 编辑:程序博客网 时间:2024/06/02 03:44

给定一个常数K以及一个单链表L,请编写程序将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,即最后不到K个元素不反转。

输入格式:

每个输入包含1个测试用例。每个测试用例第1行给出第1个结点的地址、结点总个数正整数N(<= 105)、以及正整数K(<=N),即要求反转的子链结点的个数。结点的地址是5位非负整数,NULL地址用-1表示。

接下来有N行,每行格式为:

Address Data Next

其中Address是结点地址,Data是该结点保存的整数数据,Next是下一结点的地址。

输出格式:

对每个测试用例,顺序输出反转后的链表,其上每个结点占一行,格式与输入相同。

输入样例:
00100 6 400000 4 9999900100 1 1230968237 6 -133218 3 0000099999 5 6823712309 2 33218
输出样例:
00000 4 3321833218 3 1230912309 2 0010000100 1 9999999999 5 6823768237 6 -1


思路分析:创建一个10万个元素的数组,这道题我没读懂题= =被坑了好长时间,流着眼泪在调试的说,“即最后不到K个元素不反转指的是无论有多少个节点,要反转到n/k次,一直到剩下的元素不够k了为止。。


代码如下:

#include <stdio.h>int node[100000][3];int list[100000];int main(){  int n, k, start;  while(scanf("%d%d%d", &start, &n, &k) != EOF)  {    for(int i = 0; i < n; i++)    {      int addr, data, next;      scanf("%d%d%d", &addr, &data, &next);      node[addr][0] = data, node[addr][1] = next;    }    list[0] = start;    int last =start;    int count = 1;    for(int i = 1; i < n; i++)    {      node[last][2] = last;      last = list[i] = node[last][1];      count++;      if(node[last][1] == -1)        break;    }    int s,e;    s = 0;    e = s + k;    while(e <= count && e > s)    {      for(int j = e-1; j >= s; j--)      {        if(j == k-1)          printf("%05d %d ", list[j], node[list[j]][0]);        else printf("%05d\n%05d %d ", list[j], list[j], node[list[j]][0]);      }      s = e;      e = s+k;    }    for(int j = s; j < count; j++)    {      if(j == 0)        printf("%05d %d ", list[j], node[list[j]][0]);      else        printf("%05d\n%05d %d ", list[j], list[j], node[list[j]][0]);    }    printf("-1\n");  }  return 0;}


0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 洗了冷水头头痛怎么办 头发烫染后干枯毛躁怎么办 扎不起来的短发怎么办 发际线掉头发怎么办偏方 头上脓包掉头发怎么办 小孩头发少又黄怎么办 发旋哪里头发少怎么办 每次洗头发都掉好多怎么办 10岁儿童掉头发怎么办 1岁半宝宝掉头发怎么办 头发掉发严重怎么办吃什么 掉了一块钱很气怎么办 头发软又少怎么办盘头 头发出油掉的厉害怎么办 头发很油又少怎么办 18岁头发发量少怎么办 头发少长的慢怎么办 额头大发际线高怎么办 前额两边的头发变少了怎么办 吃减肥药掉头发怎么办 牙长智齿吃饭疼怎么办 头发稀少容易掉发怎么办 大把掉发头发稀少怎么办 头发掉厉害洗生发灵更掉怎么办? 额头两侧和头顶头发少怎么办 额头前面头发少怎么办天生的 头两边的碎头发怎么办 30岁后头发少怎么办 生完孩子头发少怎么办 1岁宝宝头发少怎么办 头顶上的头发少怎么办呢 22岁头顶头发稀少怎么办 头发又稀又少怎么办 头顶的头发越来越少怎么办 四岁宝宝头发稀少怎么办 一岁宝宝头发稀少怎么办 三岁宝宝头发稀少怎么办 头发油急着出门怎么办 长出的头发毛糙弯曲怎么办 头发薄还掉头发怎么办 头发少掉的厉害怎么办