2016-08-11 7 views
-5

Dies ist mein CodeWie ein Java Arraylist in C erstellen

typedef struct _recorrido Elemento; 
typedef struct _lista_E Lista; 

struct _recorrido { 
    int valor_nodo; 
    Elemento *siguiente; 
}; 

struct _lista_E { 
    Elemento *primero; 
    Elemento *ultimo; 
    int num_elementos; 
}; 


[...] 
element = (Elemento *) malloc(sizeof (Elemento)); 

Und ich will

List[] object = new List[10]; 

Aber in C ... ich eine Arraylist <> wie dies in Java erstellen bedeuten ein Array von Listen. Ich denke, dass ich ein Array von Zeigern auf jedes Element der Liste erstellen muss, aber ich weiß nicht wie.

+0

Verwenden Sie normale Listen wie (int list [10]) oder implementieren Sie eine verknüpfte Liste für Ihre eigenen Zwecke, wenn Sie eine generische Liste benötigen. Sie können auch eine Liste wie die in Java durch einfache Arrays erstellen (indem Sie Funktionen zum Hinzufügen/Löschen/Ändern der Größe des Arrays implementieren). es dauert nur ein paar mal ... – Abdolrahman

Antwort

0

Sie können Array Ihrer Listen wie folgt erstellen:

Lista **array = (Lista**)calloc(10, sizeof(*array)); 

for(int i = 0; i < 10; ++i){ 
    array[i] = (Lista*)malloc(sizeof(**array)); 
} 

oder gerade:

Lista array[10]; 

aber letzte Array wird auf dem Stapel erstellt werden und es wird nicht für große Strukturen gut sein.

+0

Ich habe in Foren gelesen, dass jedes Mal, wenn Sie Speicher dynamisch zuweisen, es notwendig ist, es freizugeben. – Mario

+0

Ja, ist es. Sie sollten auf jeden malloc/calloc/realloc/new achten. Um dieses zweidimensionale Array zu befreien, müssen Sie frei in der Schleife wie beim Erstellen und nach dem freien Zeiger Lista * verwenden. – Shadasviar