Konuyu Oyla:
  • Derecelendirme: 5/5 - 1 oy
  • 1
  • 2
  • 3
  • 4
  • 5
Delphi Çift Yönlü Bağlı Liste Ekleme,Silme,Listeleme,Arama
#1
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;
Yalnızım ama bir kente yürüyen ordu gibiyim, edebiyattan kaçınmalıyım..
Cevapla


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  Delphi de Program Bir defa Çalışsın woywod 16 8.378 04-02-2022, Saat: 17:38
Son Yorum: QuAdR
  Listbox HorizontalScrollBar Ekleme woywod 0 984 10-01-2022, Saat: 15:24
Son Yorum: woywod
  Örnek Delphi x64 Inline Assemblier Fonksiyonları PROGRAMADOR35 11 7.300 10-08-2021, Saat: 12:46
Son Yorum: maroonka
  Delphi de ADOConnection kullanarak SQL Server' a Bağlanma Procedure nuheroglu 4 4.493 19-05-2021, Saat: 16:44
Son Yorum: midorun87
Thumbs Up [Delphi] Yeni Başlayanlar İçin Güzel Kaynak Halil Han BADEM 3 5.684 27-12-2020, Saat: 23:28
Son Yorum: Hayati



Konuyu Okuyanlar: 1 Ziyaretçi