Metot parametra olarak bir öğrenci numarası alıp bunu listede arar, bulması durumunda true aksi durumlarda false değerini döndürür. Metodun numara ararken kullandığı mantık:
· Liste boşsa false döndür,
· Aranan numara liste başından küçükse listede yoktur ve false döndür,
· Aranan numara liste sonundan büyükse listede yoktur ve false döndür,
· Aksi durumlarda: Listenin başını gösteren bir işaretçi al; bakılan numara aranan numaradan farklı ise işaretçiyi bir sonraki elemana kaydır. Bu işlem işaretçi NULL oluncaya veya numara aranan numaraya eşit oluncaya dek tekrarla. Döngüden çıkışta işaretçi NULL gösteriyorsa liste tamamen taranmıştır ve bulunamamıştır, false döndür; numara aranan numaraya eşit ise bulunmuştur true döndür.
10000 | Bilgisayar | Sait | Orhan |
12546 | Cevre | Said | Yagmahan |
16453 | Mekatronik | Selim | Ozedem |
Yukarıda ki listeye göre OgrenciBul metodu çalıştırıldı.
[cpp]
bool Liste::OgrenciBul(const int ArananNumara)
{
//Liste Boş mu?
if(ListeSonu==NULL)
return false;
//Liste Numara Sıralı Olduğundan ArananNumara ListeBasindaki Numaradan Küçükse Listede Yoktur.
else if(ListeBasi->numara > ArananNumara)
return false;
//ArananNumara Listenin Sonundaki Numaradan Büyükse Listede Yoktur.
else if(ListeSonu->numara < ArananNumara)
return false;
Veriler *Bakilan = new Veriler();
Bakilan = ListeBasi;
while(Bakilan != NULL && Bakilan->numara != ArananNumara)
Bakilan = Bakilan->sonraki;
if(Bakilan == NULL)
return false;
else if(Bakilan->numara == ArananNumara)
return true;
}
[/cpp]