Этот код:
node **listik;
...
...
cin >> listik[i];
неверен в двух отношениях.
1) listik
неинициализирован и, следовательно, listik[i]
. Другими словами - вы пытаетесь прочитать в память, которой ваша программа (скорее всего) не принадлежит.
2) Поскольку listik
является «указателем на указатель на узел», listik[i]
является "указатель на узел". Просить пользователя ввести значение указателя не имеет смысла, и, к счастью, вы получили сообщение об ошибке компиляции.
Теперь ваш реальный вопрос:
... создание массив связанных списков ...
Помните, что связанный список начинается с элемента head, который является "указателем на узел". Таким образом, чтобы получить массив связанных списков, вам нужен массив «указатель на узел».
Например:
node* arr_of_lists[20];
будет массивом с 20 «указателем на узел». И, следовательно, что-то, что вы можете использовать в качестве массива из 20 связанных списков.
Или в стиле, более похожем на c ++:
std::array<node*, 20> arr_of_lists;
Или с динамическим распределением c, чтобы вы могли контролировать размер массива во время выполнения:
node** arr_of_lists = new node*[desired_size];
При чтении данных от пользователя вам потребуется две информации:
1) Значение данных для добавляемого узла
2) В какой из (например, 20) связанных списков добавить узел.
Как:
cin >> data;
cin >> list_index;
// Skipping error checks here... but must be added to the real code
// You need a function like this to creat an new node holding
// data and insert the new node to the linked list at index "list_index"
list_insert(arr_of_lists, list_index, data);