Standard Template Library

Verketteten Liste

//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
 
#include "STLSortierenUnit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
	: TForm(Owner)
{
}
//---------------------------------------------------------------------------
 
#include <vector>
#include <algorithm>
using namespace std;
 
 
void __fastcall TForm1::Button1Click(TObject *Sender)
{const max=10;
 int za[max];   // Zahlenarray
 randomize();   // Zufallsgenerator wird neu initialisiert
 
 // Zufallsarray aufbauen und ausgeben
 for (int i=0;i<max;i++ ) {
   za[i]=random(100);
   Memo1->SelText=IntToStr(za[i])+" ";
 }
 Memo1->Lines->Add("");
 
 // Zufallsarray sortieren und ausgeben
 sort(za,za+max);
 for (int i=0;i<max;i++ ) Memo1->SelText=IntToStr(za[i])+" ";
 Memo1->Lines->Add("");
}
 
 
 
//---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{int max=StrToInt(InputBox("Zufallszahlenliste","Wieviele Zahlen",""));
 vector<int> zv; // Zahlenvector (verkettete Liste)
 
 // Zufallsvektor aufbauen und ausgeben
 for (int i=0;i<max;i++) zv.push_back(random(100));
 for (int i=0;i<max;i++ ) Memo1->SelText=IntToStr(zv[i])+" ";
 Memo1->Lines->Add("");
 
 // Zufallsvektor sortieren und ausgeben
 sort(zv.begin(),zv.end());
 for (int i=0;i<max;i++ ) Memo1->SelText=IntToStr(zv[i])+" ";
 Memo1->Lines->Add("");
 
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button3Click(TObject *Sender)
{int max=StrToInt(InputBox("Zufallszahlenliste","Wieviele Zahlen",""));
 vector<int> zv; // Zahlenvector (verkettete Liste)
 vector<int>::iterator h; // Zeiger auf Vector
 vector<int>::reverse_iterator rh; // Zeiger auf Vector
 
 // Zufallsvektor aufbauen und ausgeben
 for (int i=0;i<max;i++) zv.push_back(random(100));
 for (h=zv.begin();h<zv.end();h++) Memo1->SelText=IntToStr(*h)+" ";
 Memo1->Lines->Add("");
 
 // Zufallsvektor aufbauen und ausgeben
 sort(zv.begin(),zv.end());
 for (h=zv.begin();h<zv.end();h++) Memo1->SelText=IntToStr(*h)+" ";
 Memo1->Lines->Add("");
 
 // Übungen zum Positionieren
 h=zv.begin();
 Memo1->SelText=IntToStr(*h)+" ";     // ersten Knoten ausgeben
 Memo1->SelText=IntToStr(*(h+2))+" "; // dritten Knoten ausgeben
 h=zv.end();                              // letzten Knoten ausgeben
 Memo1->SelText=IntToStr(*(h-1))+" ";
 // rh=zv.rbegin();                           // letzten Knoten ausgeben
 // Memo1->SelText=IntToStr(*rh)+" ";
 // Memo1->SelText=IntToStr(*(zv.rbegin()))+" ";  // letzten Knoten ausgeben
  Memo1->Lines->Add("");
 
 // Übung zum Einfügen
 h=zv.begin();
 zv.insert(h+2,137);
 for (h=zv.begin();h<zv.end();h++) Memo1->SelText=IntToStr(*h)+" ";
 Memo1->Lines->Add("");
 
 // Übung zum Löschen
 int delpos=StrToInt(InputBox("Löschen","An welcher Position?",""));
 h=zv.begin();
 zv.erase(h+(delpos-1));
 for (h=zv.begin();h<zv.end();h++) Memo1->SelText=IntToStr(*h)+" ";
 Memo1->Lines->Add("");
 
 // Übung zum Vertauschen
 int pos1=StrToInt(InputBox("Tauschen","Position 1",""));
 int pos2=StrToInt(InputBox("Tauschen","Position 2",""));
 h=zv.begin();
 iter_swap((h+pos1-1),(h+pos2-1));
 for (h=zv.begin();h<zv.end();h++) Memo1->SelText=IntToStr(*h)+" ";
 Memo1->Lines->Add("");
 
}

Dokumentationen: