2009-02-22 6 views

Répondre

9

Je suppose que vous pensez à realloc. Mais son mieux pour envelopper une liste dans une structure de garder une trace de sa longueur actuelle

Exemple API

struct s_dynamic_array { 
    int allocated; /* keep track of allocated size */ 
    int usedLength; /* keep track of usage   */ 
    int *array;  /* dynamicaly grown with realloc */ 
}; 
typedef struct s_dynamic_array s_dynamic_array; 

s_dynamic_array *new_dynamic_array(int initalSize); 
void    free_dynamic_array(s_dynamic_array *array); 
int    size_of_dynamic_array(s_dynamic_array *array); 
s_dynamic_array *add_int_to_dynamic_array(s_dynamic_array *array, int value); 
int    int_at_index(s_dynamic_array *array, int index); 
+0

Dang. Mise en œuvre complète aussi. Merci beaucoup à epatel. –

1

J'utilise toujours realloc pour cela, vous pouvez envelopper vos propres fonctions de tableau autour. AFAIK, il n'y a pas d'autres choses intégrées pour cela.

+0

J'espérais éviter de réinventer la roue. C'est dommage. Je suis sûr que l'emballage dont vous parlez se passe tout le temps. –

+1

Peut-être qu'il existe une bibliothèque pour cela, mais la plupart d'entre eux sont pour le C++ ... – schnaader

+0

:-) Très bien. Je vais utiliser Realloc. Merci pour la réponse rapide. –

4

Il existe un tableau dynamique dans glib. (pas glibc si) Découvrez GArray et GPtrArray. Un tableau dynamique n'est cependant pas vraiment la même chose qu'une liste chaînée.

De toute façon this est la ressource la plus utile que j'ai pu trouver en apprenant la glib.

Questions connexes