Listeden eleman silmek için kullanılır. Parametre olarak kaydı silinecek öğrencinin numarasını alır ve silme adımları için aşağıda ki işlemleri yapar;
· Liste boş ise “Liste Boş” uyarısı ver ve metottan çık,
· Listede tek eleman varsa ve silinecek eleman ise liste başını ve liste sonunu NULL olarak ata,
· Silinecek eleman listenin ilk elemanı ise liste başını bir sonrakine kaydır,
· Silinecek eleman listenin son elemanı ise listenin sonunu bir öncekine kaydır,
· Yukarıdaki şartlardan hiç biri sağlamıyorsa listenin içinden arama yapmak için listenin başını gösteren bir işaretçi al, bu işaretçinin numarası silinecek numaraya eşit değilse işaretçiyi bir sonrakine kaydır. Bu döngüyü işaretçi NULL gösterinceye dek veya işaretçinin numarası silinecek numaraya eşit oluncaya dek tekrar et. İşaretçi NULL gösteriyorsa numara listede bulunamadı, işaretçi numarası silinecek numaraya eşit ise işaretçinin öncekinin sonrakini işaretçinin sonraki olarak değiştir, işaretçinin sonrakinin öncekini işaretçinin önceki olarak değiştir ve işaretçiyi sil.
[cpp]
void Liste::VeriSil(const int SilinecekNumara)
{
Veriler *Silinecek;
//Listede Eleman Var mı?
if(ListeSonu == NULL)
{
cout << "Liste Bos!\n";
return;
}
//Listede Tek Eleman Varsa ve Silinecek Eleman ise
else if(ListeBasi == ListeSonu && ListeBasi->numara == SilinecekNumara)
{
ListeBasi=NULL;
ListeSonu=NULL;
cout << SilinecekNumara << " numarali ogrenci listeden silindi.\nListe bosaldi!\n";
return;
}
//Silinecek Eleman ilk Eleman mı
else if(ListeBasi->numara == SilinecekNumara)
{
Silinecek=ListeBasi;
ListeBasi=ListeBasi->sonraki;
ListeBasi->onceki=NULL;
delete Silinecek;
cout << SilinecekNumara << " numarali ogrenci listeden silindi.\n";
return;
}
//Silinecek Eleman Son Eleman mı
else if(ListeSonu->numara == SilinecekNumara)
{
Silinecek=ListeSonu;
ListeSonu=ListeSonu->onceki;
ListeSonu->sonraki=NULL;
delete Silinecek;
cout << SilinecekNumara << " numarali ogrenci listeden silindi.\n";
return;
}
//Silinecek Eleman için Araya Bak
else
{
Silinecek = ListeBasi;
while(Silinecek != NULL && Silinecek->numara != SilinecekNumara)
Silinecek = Silinecek->sonraki;
if(Silinecek==NULL)
cout << SilinecekNumara << " numarali ogrenci listede bulunamadi.\n";
else if(Silinecek->numara == SilinecekNumara)
{
(Silinecek->onceki)->sonraki = Silinecek->sonraki;
(Silinecek->sonraki)->onceki = Silinecek->onceki;
delete Silinecek;
cout << SilinecekNumara << " numarali ogrenci listeden silindi.\n";
return;
}
}
}
[/cpp]