Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Verkettete Listen

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
17.05.2005, 18:31 Uhr
~Florian
Gast


Hallo,

hab ein kleines Verständnisproblem mit meinem Programm. Ich habe eine Programm geschrieben, welches mit verketteten Listen arbeitet. Das ganze sieht in der Header-Datei so aus:


C++:
struct elem_t {        
    struct elem_t *next;
    double messwert;
};    

struct head {
    unsigned int anzahl;
    struct elem_t *first;
};



Im Hauptprogramm wird das ganze so ausgeführt. Relevanter Auszug:


C++:
// In main()
// Auruf mit insert(kopf, value);
    struct head kopf = {0, NULL};        
    struct elem_t *aktpos = NULL;

...

// In den Unterfunktionen
    struct head wurzel = {0, NULL};        
    struct elem_t *aktpos = NULL;




C++:
struct elem_t *make_element(void)    
{
    return (struct elem_t *)malloc( sizeof(struct elem_t) );
}

// Element einfuegen
int insert( struct head *kopf, double dWert)
{
    struct elem_t *neu, *vorp;

    if((neu = make_element()) == NULL)
       return 1;                    

    neu->messwert = dWert;                
                                        

    // Element einordnen:
    vorp = search(neu->messwert, kopf);  
                                            

    if(vorp == NULL)      
    {                      
       neu->next = kopf->first;
       kopf->first = neu;
    }
    else
    {                    
       neu->next  = vorp->next;    // Statt nach, möchte ich vor dem item einfügen
       vorp->next = neu;
    }

    ++kopf->anzahl;

    return 0;
}

// Gibt Zeiger auf Vorgänger item zurück
struct elem_t *search( double wert, struct head *kopf)
{
     struct elem_t *sp, *retp;

     retp = NULL;
     sp   = kopf;

     while( sp != NULL)
     {
          retp = sp;
          sp   = sp->next;
     }

     return (retp);
}



In der Funktion insert() möchte ich nun das ein neues Element am Anfang und nicht am Ende der Kette eingefügt wird. Leider gelingt es mir nur neue items nach dem Vorgänger zu verknüpfen. Mein Code zum Einfügen am Anfang sah so aus:

In der Funktion search() wird der Zeiger vom ersten Element gesucht und zurückgegeben und anschließend wird in der else Bedingung von insert() folgender Code eingetragen:


C++:
     kopf->first = neu;
     neu->next = vorp;



Leider funktioniert das ganze nicht richtig. Vielleicht hat jemand von euch eine schnelle Lösung parat. Danke schonmal...

Gruß
flo
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
17.05.2005, 18:33 Uhr
~Florian
Gast


Folgenden Code bitte rausstreichen

// In den Unterfunktionen
struct head wurzel = {0, NULL};
struct elem_t *aktpos = NULL
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
18.05.2005, 16:59 Uhr
~Florian
Gast


Hat sich erledigt

Gruß
flo
 
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: