411人阅读 评论(0)

Given a constant KK and a singly linked list LL, you are supposed to reverse the links of every KK elements on LL. For example, given LL being 1→2→3→4→5→6, if K = 3K=3, then you must output 3→2→1→6→5→4; if K = 4K=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 NN (\le 10^5≤10
​5
​​ ) which is the total number of nodes, and a positive KK (\le N≤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 NN lines follow, each describes a node in the format:
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>
using namespace std;

{
int rank;

int main()
{

cin >> N;
cin >> listnum;

for (int i = 0; i < N; i++)
{
cin >> rank;

}

current = top;
top->parent = NULL;
for (int i = 0; i < N; i++)
{
current->rank = i+1;
if (i != N - 1)//not the last node
{
current->child = child;
child->parent = current;
current = child;
}
else
{
current->child = NULL;
}
}
int count;
current = top;
bool flag = false;
while (current != NULL)
{
count = 1;
child = current;
if (flag)
while (current != NULL&&count!=listnum)
{
current = current->child;
count++;
}
if (count == listnum)
{
child = current;

for (int j = 0; j < listnum-1; j++)
{
//if (child->parent != NULL)
child = child->parent;
}
current = current->child;
flag = true;
}
else
{
for (int j = 0; j < count-2; j++)
{
child = child->child;
}
printf("%05d %d %d\n", child->base_add, child->rank, -1);
break;
}

}

return 0;
}
0
0

* 以上用户言论只代表其个人观点，不代表CSDN网站的观点或立场
个人资料
• 访问：8838次
• 积分：344
• 等级：
• 排名：千里之外
• 原创：26篇
• 转载：0篇
• 译文：0篇
• 评论：2条
文章分类
评论排行
最新评论