daily pastebin goal
67%
SHARE
TWEET

Untitled

a guest Jun 22nd, 2018 66 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. //---------------------------------------------------------------------------
  2.  
  3. #include <vcl.h>
  4. #pragma hdrstop
  5.  
  6. #include "Unit1.h"
  7. //---------------------------------------------------------------------------
  8. #pragma package(smart_init)
  9. #pragma resource "*.dfm"
  10. TForm1 *Form1;
  11. //---------------------------------------------------------------------------
  12. __fastcall TForm1::TForm1(TComponent* Owner)
  13.         : TForm(Owner)
  14. {
  15. }
  16. //---------------------------------------------------------------------------
  17. //typedef struct {char Name[20]; char Vname[20]; int Alter;} DatenTp;
  18. typedef int DatenTp;
  19.  
  20.  
  21. struct KnotenTp{DatenTp Data; KnotenTp* Next;} ;
  22.  
  23. class Liste
  24.    {
  25.    private:
  26.    KnotenTp* Head;
  27.    KnotenTp* UL;            //Unterliste
  28.  
  29.    void Init(DatenTp);  //erschafft Liste
  30.    void Pfeil(KnotenTp* Von, KnotenTp* Nach);//setzt Pfeil von -> nach
  31.    KnotenTp* Bilden(DatenTp); //erschafft neue "Kiste"
  32.  
  33.    public:
  34.    Liste();                 //liste wird initialisiert
  35.    ~Liste();            //liste wird aus speicher gelöscht
  36.    bool NotEoL();       //schaut ob noch in der Liste
  37.    bool end();
  38.    void Push(DatenTp);
  39.    DatenTp pop();
  40.    DatenTp top();               //siehe NotEoL
  41.    KnotenTp* Weiter();  //setzt UL ein weiter
  42.    void Anfuegen(DatenTp);//fügt neuen kasten an
  43.    DatenTp HoleDaten(); //holt daten, die dort stehen
  44.    void Begin();        //setzt UL auf Head
  45.    void Entfernen();
  46.   } ;
  47.  
  48.  
  49.  KnotenTp* Liste::Weiter()
  50.     {
  51.    if(NotEoL())
  52.     UL=UL->Next;
  53.    return UL;
  54.    }
  55. void Liste::Push(DatenTp element)
  56. {
  57.    KnotenTp* NeuKnoten;
  58.    NeuKnoten=Bilden(element);
  59.    Pfeil(NeuKnoten,UL->Next);
  60.    Pfeil(UL,NeuKnoten);
  61. }
  62. DatenTp Liste::pop()
  63. {
  64.  Begin();
  65.  int a = HoleDaten();
  66.  Entfernen();
  67.  return a;
  68. }
  69. DatenTp Liste::top()
  70. {
  71.  Begin();
  72.  int a = HoleDaten();
  73.  return a;
  74. }
  75. void Liste::Begin()
  76.     {
  77.    UL=Head;
  78.    }
  79.  
  80. void Liste::Pfeil(KnotenTp* Von, KnotenTp* Nach)
  81.     {
  82.    Von->Next=Nach;
  83.    }
  84.  
  85. bool Liste::NotEoL()
  86.     {
  87.    return UL->Next->Next!=0;
  88.    }
  89.  
  90. KnotenTp* Liste::Bilden(DatenTp D)
  91.     {
  92.    KnotenTp* NeuKnoten;
  93.    NeuKnoten=new KnotenTp;
  94.    NeuKnoten->Data=D;
  95.    NeuKnoten->Next=0;
  96.    return NeuKnoten;
  97.    }
  98.  
  99. void Liste::Init(DatenTp Data)
  100.     {
  101.    KnotenTp* Tail;
  102.    Head=Bilden(Data);
  103.    Tail=Bilden(Data);
  104.    Pfeil(Head,Tail);
  105.    UL=Head;
  106.    }
  107.  
  108. DatenTp Liste::HoleDaten()
  109.     {
  110.    return UL->Next->Data;
  111.    }
  112.  
  113. void Liste::Anfuegen(DatenTp D)
  114.  {
  115.    KnotenTp* NeuKnoten;
  116.    NeuKnoten=Bilden(D);
  117.    Pfeil(NeuKnoten,UL->Next);
  118.    Pfeil(UL,NeuKnoten);
  119.    Weiter();
  120.  }
  121.  
  122. bool Liste::end()
  123.     {
  124.    return NotEoL();
  125.    }
  126.  
  127.  
  128. void Liste::Entfernen() {
  129.   KnotenTp* LoeschKnoten;
  130.   if (NotEoL()) {
  131.   LoeschKnoten=UL->Next;
  132.   Pfeil(UL,LoeschKnoten->Next);
  133.   delete LoeschKnoten; }
  134. }
  135.  
  136.  
  137. Liste::Liste()
  138.     {
  139.    DatenTp k=0;//{"NIX","NIX",0};
  140.    Init(k);
  141.    }
  142.  
  143. Liste::~Liste()
  144. {
  145. }
  146.  
  147.  Liste Stack;
  148. void __fastcall TForm1::Button2Click(TObject *Sender)
  149. {
  150.    Memo1->Lines->Clear();
  151.    Memo1->Lines->Add("Liste:");
  152.    Stack.Begin();
  153.    while (L.NotEoL())
  154.    {
  155.      Memo1->Lines->Add(L.HoleDaten());
  156.      Stack.Weiter();
  157.    }
  158. }
  159. //---------------------------------------------------------------------------
  160. void __fastcall TForm1::Button7Click(TObject *Sender)
  161. {
  162.  Stack.Push(StrToInt(Edit1->Text));
  163. }
  164. //---------------------------------------------------------------------------
  165.  
  166. void __fastcall TForm1::Button1Click(TObject *Sender)
  167. {
  168.  Memo1->Lines->Add("Wert von Pop: ");
  169.  Memo1->Lines->Add(Stack.pop());
  170.  Button2->Click();
  171. }
  172. //---------------------------------------------------------------------------
  173.  
  174. void __fastcall TForm1::Button3Click(TObject *Sender)
  175. {
  176.  Memo1->Lines->Add("Wert von Top: ");
  177.  Memo1->Lines->Add(Stack.top());
  178.  Button2->Click();
  179. }
  180. //---------------------------------------------------------------------------
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top