typedef struct {
List *table;
unsigned int size;
} HashTable;
typedef struct node {
Data data;
struct node *next;
} NODE;
struct listptrs {
NODE *tail;
NODE *head;
NODE *prev;
NODE *current;
};
typedef struct listptrs List;
HashTable createHashTable(unsigned int size) {
//HashTable htable = { 0 };
//return htable;
int i;
HashTable *htable = NULL;
htable = malloc(sizeof(HashTable) * size);
for (i = 0; i < size; i++) {
htable[i].table = malloc(sizeof(List));
htable[i].table->current = NULL;
htable[i].table->head = NULL;
htable[i].table->prev = NULL;
htable[i].table->tail = NULL;
htable[i].size = size;
}
return *htable;//???
}
Puis, en principal:Retour d'un tableau de structures allouées dynamiquement à partir d'une fonction dans C?
HashTable htable = createHashTable(tableSize);
htable
n'agit pas comme un tableau du tout. Des idées comment le résoudre sans changer aucune valeur de retour de la fonction et des arguments pour les fonctions? Cela fait partie d'une affectation scolaire et seul le contenu de la fonction createHashTable
peut être modifié. Le reste du programme n'est pas ici parce que ce n'est pas pertinent à la question.
Peut-être que vous devriez retourner un pointeur * * à 'HashTable' de la fonction? À l'heure actuelle, vous ne renvoyez que le premier élément du tableau que vous avez créé (et vous avez une fuite de mémoire). Ou changez l'alias de type 'HashTable' en pointeur (ce que je ne recommande vraiment pas). –