wie soll ich removeElement implementieren?
-
Hi Alle
ich würde ein Methode RemoveElement unter C (kein C++)implementieren,
damit unter
bestimmter Anforderung kann ich ein Item (nur eins )von
meinem dynamischen Array loeschen,
nur mit free()könnnte es reichen ?
z.b,aehnliche wie dies
free(&Meinearray[zuloeschendePosition]);wenn ja,nach dem free()
sollte ich die Groesse von Array noch reduzieren,oder wird
das Array sich automatisch reduziert?
Vielen Dank
-
Wenn du tatsächlich mit einem Array arbeitest, wird es häßlich:
int i; int *arr = malloc(10 * sizeof(int)); int *tmp; /* Mit arr arbeiten .... */ /* 3. El. Löschen: */ int *tmp = malloc( 9 *sizeof(int)); for(i = 0; i != 9; ++i) { if(i < 2) tmp[i] = arr[i]; else if(i > 2) tmp[i] = arr[i+1]; } free(arr); arr = tmp;
Wenn du dies häufiger machen musst, denk mal über ne verkettete Liste nach.
-
Hast du dir schon mal Gedanken gemacht, dass deine Postings vielleicht Leute lesen müssen?
Mein Tipp: Lern estmal Deutsch!
-
@linglin
Bei einem Array musst du die Elemente, die nach dem zu löschenden Element kommen, um eine Stelle nach vorne kopieren. Das geht allerdings recht einfach mit memmove() bzw. memcpy(). Da du am Ende dann ein überflüssiges Element hast, solltest du den reservierten Speicher für dein dynamisches Array kürzen. Dazu solltst du aber nicht free() verwenden sondern realloc().