daily pastebin goal
34%
SHARE
TWEET

Untitled

a guest Jun 22nd, 2018 65 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();               //siehe NotEoL
  40.    KnotenTp* Weiter();  //setzt UL ein weiter
  41.    void Anfuegen(DatenTp);//fügt neuen kasten an
  42.    DatenTp HoleDaten(); //holt daten, die dort stehen
  43.    void Begin();        //setzt UL auf Head
  44.    void Entfernen();
  45.   } ;
  46.  
  47.  
  48.  KnotenTp* Liste::Weiter()
  49.     {
  50.    if(NotEoL())
  51.     UL=UL->Next;
  52.    return UL;
  53.    }
  54. void Liste::Push(DatenTp element)
  55. {
  56.    KnotenTp* NeuKnoten;
  57.    NeuKnoten=Bilden(element);
  58.    Pfeil(NeuKnoten,UL->Next);
  59.    Pfeil(UL,NeuKnoten);
  60.    Weiter();
  61. }
  62. DatenTp Liste::Pop()
  63. {
  64.  Begin();
  65.  int a = HoleDaten();
  66.  Entfernen();
  67.  return a;
  68. }
  69. void Liste::Begin()
  70.     {
  71.    UL=Head;
  72.    }
  73.  
  74. void Liste::Pfeil(KnotenTp* Von, KnotenTp* Nach)
  75.     {
  76.    Von->Next=Nach;
  77.    }
  78.  
  79. bool Liste::NotEoL()
  80.     {
  81.    return UL->Next->Next!=0;
  82.    }
  83.  
  84. KnotenTp* Liste::Bilden(DatenTp D)
  85.     {
  86.    KnotenTp* NeuKnoten;
  87.    NeuKnoten=new KnotenTp;
  88.    NeuKnoten->Data=D;
  89.    NeuKnoten->Next=0;
  90.    return NeuKnoten;
  91.    }
  92.  
  93. void Liste::Init(DatenTp Data)
  94.     {
  95.    KnotenTp* Tail;
  96.    Head=Bilden(Data);
  97.    Tail=Bilden(Data);
  98.    Pfeil(Head,Tail);
  99.    UL=Head;
  100.    }
  101.  
  102. DatenTp Liste::HoleDaten()
  103.     {
  104.    return UL->Next->Data;
  105.    }
  106.  
  107. void Liste::Anfuegen(DatenTp D)
  108.     {
  109.    KnotenTp* NeuKnoten;
  110.    NeuKnoten=Bilden(D);
  111.    Pfeil(NeuKnoten,UL->Next);
  112.    Pfeil(UL,NeuKnoten);
  113.    Weiter();
  114.  
  115.    }
  116.  
  117. bool Liste::end()
  118.     {
  119.    return NotEoL();
  120.    }
  121.  
  122.  
  123. void Liste::Entfernen() {
  124.   KnotenTp* LoeschKnoten;
  125.   if (NotEoL()) {
  126.   LoeschKnoten=UL->Next;
  127.   Pfeil(UL,LoeschKnoten->Next);
  128.   delete LoeschKnoten; }
  129. }
  130.  
  131.  
  132. Liste::Liste()
  133.     {
  134.    DatenTp k=0;//{"NIX","NIX",0};
  135.    Init(k);
  136.    }
  137.  
  138. Liste::~Liste()
  139. {
  140. }
  141.  
  142.  Liste Queue;
  143. void __fastcall TForm1::Button2Click(TObject *Sender)
  144. {
  145.    Memo1->Lines->Clear();
  146.    Memo1->Lines->Add("Liste:");
  147.  
  148.    Queue.Begin();
  149.    while ( Queue.NotEoL()) {
  150.          Memo1->Lines->Add(Queue.HoleDaten());
  151.          Queue.Weiter();
  152.          }
  153. }
  154. //---------------------------------------------------------------------------
  155.  
  156.  
  157. void __fastcall TForm1::Button1Click(TObject *Sender)
  158. {
  159.  Queue.Push(StrToInt(Edit1->Text));
  160.  Button2->Click();
  161. }
  162. //---------------------------------------------------------------------------
  163.  
  164. void __fastcall TForm1::Button3Click(TObject *Sender)
  165. {
  166.  int temp=Queue.Pop();
  167.  Button2->Click();
  168.  Memo1->Lines->Add("Pop-Wert: ");
  169.  Memo1->Lines->Add(IntToStr(temp));
  170.  
  171. }
  172. //---------------------------------------------------------------------------
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