Problem mit verketteter Liste
-
Hallo ich soll für die Schule eine Liste in C++ entwerfen, die mir Name, Vorname und Alter ausgibt. Mein Tutor hat mir für die umsetzung den Code "typedef struct {char Name[29], char Vname[20],int Alter }DatenTp" gegeben. Nur leider hakt es immer bei der Umsetzung und somit habe ich es erst mal mit normalen Zahlen gemacht, was auch klappt hier der Code:
//--------------------------------------------------------------------------- #include <vcl.h> #pragma hdrstop #include "Unit1.h" //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma resource "*.dfm" TForm1 *Form1; int v=0; typedef int DatenTp; struct KnotenTp{DatenTp Data; KnotenTp* Next;} ; class Liste { private: KnotenTp* Head; KnotenTp* UL; //Unterliste KnotenTp* Tail; void Init(DatenTp); //erschafft Liste void Pfeil(KnotenTp* Von, KnotenTp* Nach);//setzt Pfeil von -> nach bool NotEoL(); //schaut ob noch in der Liste KnotenTp* Bilden(DatenTp); //erschafft neue "Kiste" public: Liste(); //liste wird initialisiert ~Liste(); //liste wird aus speicher gelöscht bool end(); //siehe NotEoL KnotenTp* Weiter(); //setzt UL ein weiter void Anfuegen(DatenTp);//fügt neuen kasten an DatenTp HoleDaten(); //holt daten, die dort stehen void Begin(); //setzt UL auf Head } ; //--------------------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { } //--------------------------------------------------------------------------- KnotenTp* Liste::Weiter() { if (NotEoL()) UL=UL->Next; return UL; } void Liste::Begin() { UL=Head; } void Liste::Pfeil(KnotenTp* Von, KnotenTp* Nach) { Von->Next=Nach; } bool Liste::NotEoL() { return UL->Next!=Tail; } KnotenTp* Liste::Bilden(DatenTp D) { KnotenTp* NeuKnoten; NeuKnoten=new KnotenTp; NeuKnoten->Data=D; NeuKnoten->Next=0; return NeuKnoten; } void Liste::Init(DatenTp Data) { KnotenTp* Tail; Head=Bilden(Data); Tail=Bilden(Data); Pfeil(Head,Tail); UL=Head; } DatenTp Liste::HoleDaten() { return UL->Next->Data; } void Liste::Anfuegen(DatenTp D) { KnotenTp* NeuKnoten; NeuKnoten=Bilden(D); Pfeil(NeuKnoten,UL->Next); Pfeil(UL,NeuKnoten); } bool Liste::end() { return UL->Next->Next!=0; } Liste::Liste() { Init(1); } Liste::~Liste() {} Liste list; void __fastcall TForm1::Button1Click(TObject *Sender) { list.Begin(); Memo1->Clear(); for(int i=0;i<v;i++) { Memo1->Lines->Add(list.HoleDaten()); list.Weiter(); } } //--------------------------------------------------------------------------- void __fastcall TForm1::Button2Click(TObject *Sender) { list.Anfuegen(Edit1->Text.ToInt()); v=v+1; } //---------------------------------------------------------------------------Bitte um Hilfe, wie ich daraus eine Ausgabe machen kann, die Namen beeinhaltet.
-
Wo ist das Struct mit Name, Vorname etc?
-
Ich versteh Dein Problem nicht. DatenTp ist doch vorgegeben:
typedef struct {char Name[29], char Vname[20],int Alter }DatenTpSetz das mal für
typedef int DatenTp;ein.