Guest User

Untitled

a guest
Jun 22nd, 2018
96
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.77 KB | None | 0 0
  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. //---------------------------------------------------------------------------
Add Comment
Please, Sign In to add comment