Ich mache eine HashMap in C und ich versuche, eine Values () -Funktion zu machen, die Standard in allen HashMaps ist.C - HashMap Values () -Funktion - gebe ich NULL-Werte zurück?
Lassen Sie uns meine HashMap sagen sah wie folgt aus:
(Anmerkung der Schlüsselsatz vom Typ <void*, void*>
)
// CAPACITY = 8, SIZE = 4
[0] <"Pancakes", 24>
[1] = NULL
[2] = <"Waffles", 7>
[3] = NULL
[4] = NULL
[5] = NULL
[6] = <"Eggs", 12>
[7] = <"Bacon", 99>
Normalerweise in diesem sitatuion, würde ich ein Array erstellen von size_t
5
, und es würde wie folgt aussehen.
{ 24, 7, 12, 99, NULL }
NULL muss hier sein, oder aber nachdem ich das Array zurück, die Schleife, die durch das Feld zu gehen versucht, wird nicht zu wissen, die Lage sein, wann man aufhören muss.
Was wäre, wenn ich Folgendes hätte?
// CAPACITY = 8, SIZE = 4
[0] <"Pancakes", 24>
[1] = NULL
[2] = <"Waffles", NULL>
[3] = NULL
[4] = NULL
[5] = NULL
[6] = <"Eggs", 12>
[7] = <"Bacon", 99>
Plötzlich sieht mein Array wie folgt aus:
{ 24, NULL, 12, 99, NULL }
Und wenn ich versuchen würde, das drucken, nachdem sie zurückgekehrt war, würde es die folgenden drucken:
24
Wie soll ich mit diesem Problem umgehen? Sollte ich einfach NULL
Werte ignorieren? Wenn ja, meine HashMap
könnte eine size
von 4 haben und der Programmierer erwartet 4
Werte von meiner Values()
Funktion, und ich gebe ihm nur ein Array der Größe 3
. Und nein, ich möchte wirklich nicht eine struct
machen, um mehrere Variablen zurück wie size
und das Array übergeben
Ihre Frage ist nicht klar. '<" Waffles ", NULL>' Das ist kein gültiger C-Code, daher ist nicht klar, was Sie dort darstellen wollen. Was soll dieses 'NULL' darstellen? Und wofür soll das Array sein, auf das du dich immer beziehst? Es ist wirklich nicht klar, was Ihre Idee von einer HashMap-Implementierung ist. A [mcve] würde wahrscheinlich Dinge klären. – kaylum
Dies scheint nicht wie eine Hash-Map in dem Sinne, dass Sie die Werte in sequenzieller Reihenfolge auflisten und eine Hash-Map nicht unbedingt das tun. Sie können nicht davon ausgehen, dass die Werte in aufeinanderfolgenden Zeitschlitzen in der Tabelle liegen. – templatetypedef
Lassen Sie mich klären. Der obige Code ist absichtlich kein gültiger C-Code. Ich wollte die Dinge nicht mit irrelevantem Code verkomplizieren. Stattdessen wollte ich ein theoretisches Problem beschreiben. <"Bacon", 99> ist ein 'struct Node' mit zwei' void * 'Feldern. Das bedeutet, dass mein 'Schlüssel' oder' Wert' 'NULL' sein kann, was in einer' HashMap' akzeptabel ist, aber nicht in einer 'HashTable'. Hoffentlich klärt das alle Bedenken auf. – Hatefiend