2009-02-22 3 views

Respuesta

9

Supongo que estás pensando en realloc. Pero es mejor para envolver una listaen una estructura para realizar un seguimiento de su longitud actual

API de ejemplo

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. Implementación completa también. Muchas gracias epatel. –

1

siempre uso realloc de esto, se podía envolver sus propias funciones de matriz alrededor de ella. AFAIK, no hay otras cosas incorporadas para esto.

+0

tenía la esperanza de evitar volver a inventar la rueda. qué lástima. Estoy seguro de que la envoltura de la que hablas ocurre todo el tiempo. –

+1

Quizás haya alguna biblioteca para él, pero la mayoría de ellos son para C++ ... – schnaader

+0

:-) De acuerdo. Usaré realloc. Gracias por la rápida respuesta. –

4

Hay una matriz dinámica en glib. (aunque no es glibc) Eche un vistazo a GArray y GPtrArray. Sin embargo, una matriz dinámica no es en realidad lo mismo que una lista vinculada.

Anyways this es el recurso más útil que he podido encontrar al aprender glib.

Cuestiones relacionadas