Guest User

Untitled

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