Создание структуры, которая содержит 2d массив связанных списков с пользовательским объектом - PullRequest
0 голосов
/ 02 февраля 2019

Я новичок в C и пытаюсь понять некоторые фундаментальные вещи.Я пытаюсь создать структуру, которая содержит массив, который состоит из связанных списков.Что-то вокруг этого.

--------------------------------
|    A    |     B    |    C    |
--------------------------------
      |         |          | 
      V         V          V
   -------    -------    -------
   |  a  |    |  b  |    |  c  |
   -------    -------    -------
      |
      V
   --------
   |  a1  |
   --------

То есть ill имеет массив, который содержит заголовок (A, B и C) каждого связанного списка, и каждая головка будет содержать указатель на следующий узел.

У меня есть структура Object

typedef struct Object {
    void* data;
    struct Object* next;
    struct Object* head;
}Object;

И таблица, которая содержит дополнительную информацию

typedef struct Table {
    Object** arr;
    //More info...//
}Table;

У меня есть функция, которая должна создать таблицу с массивом.

Table* createTable(){

    Table* table = (Table*)malloc(sizeof(struct Table*));

    Object **array = (Object**)malloc(3*sizeof(struct Object*));

    for(int j = 0; j < size; j++){
        array[j] = malloc(sizeof(struct Object));
    }
table->arr = array;
return table;

}

Но вся моя память не работает, как я надеялся, я продолжаю получать массив только с одним узлом.Я предполагаю, что я все еще скучаю по некоторым основным вещам.

Спасибо

1 Ответ

0 голосов
/ 02 февраля 2019

В Table* table = (Table*)malloc(sizeof(struct Table*)) есть ошибка, которая должна быть Table* table = malloc(sizeof(struct Table)).

Но остальная часть вашего кода написана так, что он создаст массив размером 3 указателей на Object, и он инициализирует этот массив, позволяя каждому его элементу указывать на один Object, который вы создаете (я полагаю, что ваша size -вариант инициализируется где-то еще 3, в противном случае вы теперь знаете, где искать),Таким образом, ясно, что вы получаете только один элемент в каждой позиции вашего массива, вы просто не создаете больше ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...