![]() |
|
Delphi Çift Yönlü Bağlı Liste Ekleme,Silme,Listeleme,Arama - Baskı Önizleme +- Delphi Can (https://www.delphican.com) +-- Forum: Delphi (https://www.delphican.com/forumdisplay.php?fid=3) +--- Forum: İpuçları (https://www.delphican.com/forumdisplay.php?fid=24) +--- Konu Başlığı: Delphi Çift Yönlü Bağlı Liste Ekleme,Silme,Listeleme,Arama (/showthread.php?tid=2948) |
Delphi Çift Yönlü Bağlı Liste Ekleme,Silme,Listeleme,Arama - narkotik - 26-11-2018 Bir önceki konu başlığında tek yönlü bağlı liste ile işlemler yapmıştık. Bu sefer çift yönlü bağlı liste üzerinde çalışacağız... Ogrenci = ^TOgrenci;
TOgrenci = record
Numara : Integer;
Ad : String;
Soyad : String;
Onceki : Ogrenci;
Sonraki : Ogrenci;
end;
var
Form1: TForm1;
First,Last,Temp : Ogrenci;
implementation
{$R *.dfm}
procedure AddItem(xNo:Integer;xAd,xSoyad:string);
Var Item : Ogrenci;
begin
New(Item);
Item^.Ad := xAd;
Item^.Soyad := xSoyad;
Item^.Numara := xNo;
if First = nil then
begin
First := Item;
Last := Item;
Last^.Onceki := nil;
Last^.Sonraki := nil;
end
else
begin
Last^.Sonraki := Item;
Item.Onceki := Last;
Last := Item;
Last^.Sonraki := nil;
end;
end;
procedure List(mem:TMemo);
begin
mem.Lines.Clear;
Temp := First;
while Temp <> nil do
begin
mem.Lines.Add(Format('%d %s %s',[Temp^.Numara,Temp^.Ad,Temp^.Soyad]));
Temp := Temp^.Sonraki;
end;
end;
function Search(No:Integer):Ogrenci;
begin
Temp := First;
while Temp<>nil do
begin
if Temp^.Numara = No then
begin
Result := Temp;
Break;
end;
Temp := Temp^.Sonraki;
end;
end;
procedure Delete(No:Integer);
Var DeleteTemp : Ogrenci;
begin
if First = nil then Exit;
if First^.Numara = No then
begin
DeleteTemp := First;
First := First^.Sonraki;
First^.Onceki := nil;
Dispose(DeleteTemp);
end
else
begin
Temp := First;
while Temp^.Sonraki <> nil do
begin
if Temp^.Sonraki^.Numara = No then
begin
DeleteTemp := Temp^.Sonraki;
if DeleteTemp = Last then
begin
Last := Temp;
Last^.Sonraki := nil;
end
else
begin
Temp^.Sonraki := DeleteTemp^.Sonraki;
DeleteTemp^.Sonraki^.Onceki := Temp;
end;
Dispose(DeleteTemp);
Break;
end;
Temp := Temp^.Sonraki;
end;
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
AddItem(171,'Mehmet','YILMAZ');
AddItem(172,'Ali','KÜÇÜK');
AddItem(173,'Merve','ŞEN');
List(Memo1);
Delete(172);
AddItem(174,'Halil','İBRAHİM');
List(Memo1);
{
SONUÇ
171 Mehmet YILMAZ
173 Merve ŞEN
174 Halil İBRAHİM
}
end;
|