Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Hilfe bei einfach verketteter 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
06.06.2005, 18:15 Uhr
Sunny84



Hallo,

und zwar möchte ich ein Programm schreiben, bei dem man als Nutzer immer einen Namen (später soll viel mehr dazu kommen, ändert aber nix am Problem) in eine verkettete Liste hinzufügen kann (Funktion Add). Danach soll die gesamte Liste ausgelesen werden (Funktion Read).

Nun ist allerdings mein Problem, dass bei der Ausgabe immer nur die letzten beiden eingegebenen Namen angezeigt werden. Hab ich also "A","B","C","D" eingefügt gibt es mir nur "C" und "D" aus.

Hier ist nun das Programm, das mir die Probleme bereitet. Hab es für die Fehlerveranschaulichung möglichst einfach gehalten.


C++:

#include <iostream>
#include <string>
using namespace std;
struct Student
{
char name[40];
Student *pNext;
};

void Add(Student *&Lst)
{
    char name[40];
    cout<< endl <<"Name: ";
    cin >> name;
    Student *New = new Student;
    New->name  = name;
    New->pNext = NULL;
    if (Lst == NULL) Lst = New;
    else
    {while (Lst->pNext != NULL) Lst = Lst->pNext;
     Lst->pNext = New;}

}


void Read(Student * const Lst){

    if(Lst!=NULL)
    {Student *temp = Lst;
     while(temp!=NULL)
    {cout << temp->name << endl;
     temp=temp->pNext;}
    }
}


int main()
{   int ende;
    Student *Liste = NULL;
    ende=1;
    while(ende!=0)
    {
    Add(Liste);
    Read(Liste);
    cout<<"Weiter (0 Nein, 1 Ja) "; cin >> ende;
    }
    return 0;
}




Ich hoffe ihr könnt mir helfen. Vielen Dank schonmal!

mfg
Frank
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
06.06.2005, 19:05 Uhr
~CDW
Gast


statt:

C++:
{while (Lst->pNext != NULL) Lst = Lst->pNext;
     Lst->pNext = New;}

}


wäre hier wohl

C++:
{while (temp->pNext != NULL) temp = temp->pNext;
     temp->pNext = New;}

}


besser (genauso wie Du es in Read machst da ansonsten die "wurzel" bzw der Anfangsknoten verloren geht (da dieser durch Lst = Lst->pNext verändert wird) .

Dieser Post wurde am 06.06.2005 um 19:34 Uhr von Pablo editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
08.06.2005, 18:14 Uhr
Sunny84



Oha dankeschön. Nun klappt alles.
 
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: