Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //---------------------------------------------------------------------------
- #include <vcl.h>
- #pragma hdrstop
- #include "Unit1.h"
- //---------------------------------------------------------------------------
- #pragma package(smart_init)
- #pragma resource "*.dfm"
- TForm1 *Form1;
- //---------------------------------------------------------------------------
- __fastcall TForm1::TForm1(TComponent* Owner)
- : TForm(Owner)
- {
- }
- //---------------------------------------------------------------------------
- //typedef struct {char Name[20]; char Vname[20]; int Alter;} DatenTp;
- typedef int DatenTp;
- struct KnotenTp{DatenTp Data; KnotenTp* Next;} ;
- class Liste
- {
- private:
- KnotenTp* Head;
- KnotenTp* UL; //Unterliste
- void Init(DatenTp); //erschafft Liste
- void Pfeil(KnotenTp* Von, KnotenTp* Nach);//setzt Pfeil von -> nach
- KnotenTp* Bilden(DatenTp); //erschafft neue "Kiste"
- public:
- Liste(); //liste wird initialisiert
- ~Liste(); //liste wird aus speicher gelöscht
- bool NotEoL(); //schaut ob noch in der Liste
- bool end();
- void Push(DatenTp);
- DatenTp pop();
- DatenTp top(); //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
- void Entfernen();
- } ;
- KnotenTp* Liste::Weiter()
- {
- if(NotEoL())
- UL=UL->Next;
- return UL;
- }
- void Liste::Push(DatenTp element)
- {
- KnotenTp* NeuKnoten;
- NeuKnoten=Bilden(element);
- Pfeil(NeuKnoten,UL->Next);
- Pfeil(UL,NeuKnoten);
- }
- DatenTp Liste::pop()
- {
- Begin();
- int a = HoleDaten();
- Entfernen();
- return a;
- }
- DatenTp Liste::top()
- {
- Begin();
- int a = HoleDaten();
- return a;
- }
- void Liste::Begin()
- {
- UL=Head;
- }
- void Liste::Pfeil(KnotenTp* Von, KnotenTp* Nach)
- {
- Von->Next=Nach;
- }
- bool Liste::NotEoL()
- {
- return UL->Next->Next!=0;
- }
- 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);
- Weiter();
- }
- bool Liste::end()
- {
- return NotEoL();
- }
- void Liste::Entfernen() {
- KnotenTp* LoeschKnoten;
- if (NotEoL()) {
- LoeschKnoten=UL->Next;
- Pfeil(UL,LoeschKnoten->Next);
- delete LoeschKnoten; }
- }
- Liste::Liste()
- {
- DatenTp k=0;//{"NIX","NIX",0};
- Init(k);
- }
- Liste::~Liste()
- {
- }
- Liste Stack;
- void __fastcall TForm1::Button2Click(TObject *Sender)
- {
- Memo1->Lines->Clear();
- Memo1->Lines->Add("Liste:");
- Stack.Begin();
- while (L.NotEoL())
- {
- Memo1->Lines->Add(L.HoleDaten());
- Stack.Weiter();
- }
- }
- //---------------------------------------------------------------------------
- void __fastcall TForm1::Button7Click(TObject *Sender)
- {
- Stack.Push(StrToInt(Edit1->Text));
- }
- //---------------------------------------------------------------------------
- void __fastcall TForm1::Button1Click(TObject *Sender)
- {
- Memo1->Lines->Add("Wert von Pop: ");
- Memo1->Lines->Add(Stack.pop());
- Button2->Click();
- }
- //---------------------------------------------------------------------------
- void __fastcall TForm1::Button3Click(TObject *Sender)
- {
- Memo1->Lines->Add("Wert von Top: ");
- Memo1->Lines->Add(Stack.top());
- Button2->Click();
- }
- //---------------------------------------------------------------------------
Add Comment
Please, Sign In to add comment