C Динамическое распределение памяти с использованием структур - PullRequest
0 голосов
/ 13 января 2019

Я пытаюсь выделить память в моей функции group_list. Идея функции group_list состоит в сортировке Node * -элементов (которые являются списками) одинаковой длины в другом списке. (Пример вида использования математической записи: group_list (["aa", "b", "cc", "d", "eee"]) = [["aa", "cc"], ["d"] , ["eee"]])

Если я хочу разместить n-элементы * в списке, я бы просто использовал calloc (n, sizeof (Node *)); а как выделить память для списка Node * -элементов?

Список может содержать только один элемент, который включает в себя n-элементов * Node или n элементов, которые включают в себя только один * -элемент Node и все, что между ними.

 #include <stdio.h>

 typedef struct Node {
    void* value;
    struct Node* next; // self-reference
 } Node;

 //constructor function
 Node* new_node(void* value, Node* next) {
    Node* node = calloc(1, sizeof(Node));
    node->value = value;
    node->next = next;
    return node;
 }

 Node* group_list(Node* list) {
    Node* new_list = calloc(??);

    return NULL;
 }

 int main(void) {
    Node* list1 = new_node("a", new_node("bb", new_node("ccc", 
 new_node("dd", new_node("e", NULL)))));
    group_list(list1);

    return 0;
 } 
...