Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » verkettete Liste

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
08.11.2005, 17:57 Uhr
~hidi
Gast


Hallo brauche ganz dringend hilfe morgen ist es leider schon zu spät. habe test.
Bitte um Hilfe: Beim Anhängen einer Liste.


C++:
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <string.h>

typedef struct LISTELEMENT{
    char data[40];
    struct LISTELEMENT *next;
}ListElement;

int create_list(ListElement **listB, ListElement **listE);

int main(int argc, char **argv){

    ListElement *listb=NULL, *liste=NULL;

    create_list(&listb, &liste);

    return 0;
}

int create_list(ListElement **listB, ListElement **listE){

    ListElement *le=NULL, *le2=NULL, *prev=NULL;
    char name[50];
    int i=0;
        
    le2=(ListElement *) malloc(sizeof(ListElement)*4);
    
    for(i=0;i<4;i++){
        printf("Name: ");
        gets(name);
    }

    //Nach dem 2. Knoten ein anderer eingefügt

    le2=*listB;

    for(i=0;i<2;i++){

        prev=le2;
         le2=le2->next;             //Kommt immer eine Fehlermeldung:  Speicherzugriffsverletzung was ist das Problem//
    }

    le=(ListElement *) malloc(sizeof(ListElement));

    strcpy(le->data,"Kinder");
    le->next=le;
    prev->next=le;
    
    return 0;
}


Vielen, vielen Dank hidi

Dieser Post wurde am 08.11.2005 um 17:57 Uhr von Windalf editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
08.11.2005, 18:18 Uhr
Pler
Einer von Vielen
(Operator)


Auf den ersten Blick würd ich sagen:
Du musst in der Funktion immer mit *[Zeiger] zugreifen
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
08.11.2005, 20:52 Uhr
Bruder Leif
dances with systems
(Operator)


Ich seh da erst mal mehrere Probleme:
1. Viermal gets(name) in einer Schleife, die ersten drei Eingaben werden verworfen.
2. "le2" wird auf NULL gesetzt
3. Dabei wird der vorherige Wert von "le2" vergessen: Speicher wurde allokiert, aber es gibt keine Verweise mehr drauf.
4. Von Deinem Nullzeiger aus gehst Du nach "->next", liest also einen unerlaubten "wilden" Pointer aus und springst im Nirvana von einem Nichts ins nächste...
5. Nebenbei wird der angelegte Speicher nirgends wieder freigegeben

Von einer verketteten Liste ist in der Struktur etwas zu sehen, im Code nicht. Schau Dir erst mal www.fun-soft.de/showtopic.php?threadid=11663 an und such im Forum nach "verkettete Liste", ein paar der Einträge sind sehr hilfreich...
--
Mit 40 Fieber sitzt man nicht mehr vor dem PC.
Man liegt im Bett.
Mit dem Notebook.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
09.11.2005, 16:26 Uhr
Pler
Einer von Vielen
(Operator)


Das hab ich ja glatt übersehen. Da stimmt ja echt gar nichts.
Da brauch man keine Fehler suchen. Also nur neu anfangen.

Aber: Heut ist es ja eh schon zu spät, dieser Thread kann also geschlossen werden!
Obwohl mich ja mal interessieren würde, welche note es darauf gab.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: