数据结构——Reversing Linked List

Reversing Linked List参考解答

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
#include <stdio.h>
#define MAXSIZE 100010

int main()
{
int data[MAXSIZE], next[MAXSIZE], addrList[MAXSIZE];
int firstAddr, N, K;
scanf("%d%d%d", &firstAddr, &N, &K);

int i;
for(i = 0; i < N; i++)
{
int tempAddr, tempData, tempNext;
scanf("%d%d%d", &tempAddr, &tempData, &tempNext);
data[tempAddr] = tempData;
next[tempAddr] = tempNext;
}

int count = 0;
while(firstAddr != -1)
{
addrList[count++] = firstAddr;
firstAddr = next[firstAddr];
}

for(i = 0; i < count - count % K; i += K)
{
int j;
for(j = 0; j < K / 2; j++)
{
int temp = addrList[i + j];
addrList[i + j] = addrList[i + K - 1 - j];
addrList[i + K - 1 - j] = temp;
}
}

for(i = 0; i < count - 1; i++)
{
printf("%05d %d %05d\n", addrList[i], data[addrList[i]], addrList[i + 1]);
}
printf("%05d %d -1\n", addrList[count - 1], data[addrList[count - 1]]);

return 0;
}
打赏
  • 版权声明: 本博客所有文章除特别声明外,著作权归作者所有。转载请注明出处!
  • Copyrights © 2020-2021 zhangguoliu
  • 访问人数: | 浏览次数:

请我喝杯咖啡吧~

支付宝
微信