50091. Two-level Table
難度:4/51
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#include <stdio.h>
#include <stdlib.h>
#include "constructTable.h"
int ***constructTable(int A[], int B[]){
int n = 0;
while(A[n] != 0) n++; n++;
int*** first_level = (int***) malloc(sizeof(int**) * n);
first_level[n - 1] = NULL;
int flag = 1;
int* uni_p = B;
for(int i = 0; i < n - 1; i++){
int par_size = A[i];
int** second_level = (int**) malloc(sizeof(int*) * par_size);
first_level[i] = second_level;
for(int j = 0; j < par_size; j++){
if(flag){
second_level[j] = uni_p;
flag = 0;
}
else{
while(*uni_p != 0) uni_p++;
uni_p++;
second_level[j] = uni_p;
}
}
}
return first_level;
}