Zum Inhalt springen

Dynamische Listen unter C


huutsch

Empfohlene Beiträge

Hallo ich habe folgenden Struct

struct ADRESSEN *adr;

struct ADRESSEN

{

int pos;

char Name[30];

char Vorname[20];

....

int next;

int prev;

}

DIeses soll eine dynamische liste werden, soadass undendlich vile adressen gespeichert werden können. Bitte schauht mal ob das richtig ist mir kommt es vor als ob ein fehler dadrin ist und dann noch eine frage wie mussd er malloc befehl dazu sein zum speicherreservieren?

mfg und danke schonmal

alex

Link zu diesem Kommentar
Auf anderen Seiten teilen

next und prev müssen vom Typ struct ADRESSEN* sein, sonst bekommst du damit keine Verkettung hin. Du brauchst ja einen Zeiger auf die nächste/vorherige Struktur. Außerdem solltest du die struct-Deklaration mit einem Semikolon abschließen.

Speicher reservieren:

struct ADRESSEN* neueAdresse = malloc( sizeof( struct ADRESSEN ) );

Link zu diesem Kommentar
Auf anderen Seiten teilen

Original geschrieben von huutsch

also die ints sollen auf den speicherpalzt verweisen also sind es eigetlich nur zahlen, welche für die position des nächsten oder des voherigen feldes stehen

Meinst du jetzt mit "Position" eine Art Index, also von Null bis irgendwas, oder die tatsächliche Speicheradresse?

Falls ersteres:

Das ist Unsinn, denn der nächste Index ist der eigene Index + 1, also redundant.

Falls letzteres:

Für Speicheradressen verwendet man Zeiger, keine Integer, auch wenn beides letztendlich Zahlen sind. Du kannst dich z.B. nicht darauf verlassen, dass ein int genauso groß ist wie ein struct ADRESSEN*. Außerdem erschwert es die Verwendung der Liste, weil du ständig casts machen musst. Und damit untergräbst du die Sicherheit, die dir die Typstrenge bietet.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Original geschrieben von huutsch

das int soll uch nur die adresse sein allerdings ohne dirketen verweis also nur die nummer des blockes vo die nächten Informationne drinnen stehen das sollte so funktionieren, das ich später in der lage bin zu sagen adr = prev

Und damit das geht, muss prev ein struct ADRESSEN* sein, denn adr ist ja auch einer. Du musst in deiner Struktur einfach nur den Typ von prev und next von int auf struct ADRESSEN* ändern, dann kannst du die Liste aufbauen.
Link zu diesem Kommentar
Auf anderen Seiten teilen

also nimme den struct von oben dort habe ich dann gesagt

struct ADRESSEN *adr;

adr = malloc(sizeof(structADRESSEN));

so dann habe ich versuche in dem int feld pos der struktur eine zahl zu speichern:

adr.pos=11;

borland sagt E2294 Structure required on left side of. or.*

Link zu diesem Kommentar
Auf anderen Seiten teilen

Original geschrieben von huutsch

so dann habe ich versuche in dem int feld pos der struktur eine zahl zu speichern:

adr.pos=11;

borland sagt E2294 Structure required on left side of. or.*

Da hat er recht ;)

adr ist ein Zeiger, also musst du den den Pfeiloperator verwenden:

adr->pos = 11;

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...