int main() { int i, digit; pnode phead = NULL; init_node(&phead, sizeof(snode)); create_chain(phead); pnode arr[N]; for (i = 0; i < N; i++) { init_node(&arr[i], sizeof(snode)); } digit = max_digit(phead); for (i = 0; i < digit; i++) { phead_to_arr(phead, arr); arr_to_phead(phead, arr); } show_chain(phead); for (i = 0; i < N; i++) { destroy_chain(&arr[i]); } destroy_chain(&phead); return 0; }
constexpr std::size_t max_digit(Int1 base_from, Int2 base_to) { return 1 + (base_to ? max_digit(base_from, base_to / base_from) : 0); }