Ödevi yapmak zorunlu değildir. Son teslim tarihi 19 Ekim Pazar 23:59’dur. Yazdığınız main() fonksiyonunu ve ekran çıktısını ödev gönder sayfasından gönderebilirsiniz.
Ödev konusu
Aşağıdaki kod, tek yönlü bağlı listede ekleme, silme ve yazdırma fonksiyonlarını içermektedir. Kod ile oluşturulan listedeki düğümler aşağıdaki bilgileri içermektedir:
- ad (string)
- soyad (string)
- öğrenci no (int)
main() fonksiyonuna aşağıdaki işlemleri sırasıyla yaptıracak kodları ekleyiniz:
- Listeye ilk eleman olarak kendinizi ekleyin
- Listeye birkaç arkadaşınızı ekleyin
- Listeyi yazdırın
- Listeden kendinizi silin
- Listeyi yazdırın
- Listeden bir arkadaşınızı silin
- Listeyi yazdırın
#include <iostream>
#include <cstring>
#include <stdlib.h>
using namespace std;
// DUGUM adinda bir veri yapisi olustur ----------------------------------------------
struct dugum{
string ad;
string soyad;
int no;
dugum *sonraki;
};
// Bagli listeyi yazdir ---------------------------------------------------------------
void yazdir(dugum *adres){
if (adres == NULL){
cout<<"Liste boş";
}else{
cout << "BAGLI LISTE:"<<endl;
while(adres !=NULL){
cout<<adres->ad<<" ";
cout<<adres->soyad<<" ";
cout<<adres->no<<endl;
adres = adres->sonraki;
}
}
cout<<endl;
}
// Bagli listeye ekle ------------------------------------------------------------------
dugum *ekle(dugum *kok, dugum *adres, string adYeni, string soyadYeni, int noYeni)
{
if (adres==NULL) // Liste boş. Gelen adres verisi kök adresini gösteriyor
{
kok->ad = adYeni;
kok->soyad = soyadYeni;
kok->no = noYeni;
kok->sonraki = NULL;
cout<<"+"<<adYeni<<" "<<soyadYeni<<" eklendi."<<endl;
return kok; // Kökün gösterdiği ilk eleman yazıldı. Gösterici artık o elemanı gösteriyor
}
else if(adres->sonraki == NULL) // Gösterici son elemanda, düğümü sona ekliyoruz ve göstericiyi yeni düğüme işaretliyoruz
{
dugum *yeni = new dugum;
adres->sonraki = yeni;
yeni->ad = adYeni;
yeni->soyad = soyadYeni;
yeni->no = noYeni;
yeni->sonraki = NULL;
cout<<"+"<<adYeni<<" "<<soyadYeni<<" eklendi."<<endl;
return adres->sonraki;
}
else // Göstericinin gösterdiği araya eleman ekliyoruz
{
dugum *yeni = new dugum;
yeni->sonraki = adres->sonraki;
adres->sonraki = yeni;
yeni->ad = adYeni;
yeni->soyad = soyadYeni;
yeni->no = noYeni;
cout<<"+"<<adYeni<<" "<<soyadYeni<<" eklendi."<<endl;
return adres->sonraki;
}
}
// Bagli listeden sil ------------------------------------------------------------------
dugum* sil(dugum* adres ,string adYeni, string soyadYeni, int noYeni)
{
if ((adres->ad == adYeni)&&(adres->soyad == soyadYeni)&&(adres->no == noYeni)) // Silinecek düğüm ilk sırada iste silme sonrasında kök adres değişecek
{
dugum *temp = adres;
adres = adres->sonraki;
delete(temp);
cout<<"-"<<adYeni<<" "<<soyadYeni<<" ilk dugumdeydi ve silindi."<<endl;
return adres; // Kök adresi değişti.
}
else // Listede birden fazla düğüm varsa
{
dugum *oncekiDugum = NULL;
dugum *kok = adres;
while (adres!= NULL) // Silinecek düğümü bulmak için aramaya başla
{
if ((adres->ad == adYeni)&&(adres->soyad == soyadYeni)&&(adres->no == noYeni)) // Düğüm bulundu mu?
{
oncekiDugum->sonraki = adres->sonraki;
delete(adres);
cout<<"-"<<adYeni<<" "<<soyadYeni<<" silindi."<<endl;
return kok;
}
oncekiDugum = adres;
adres = adres->sonraki;
}
return kok;
}
}
int main() {
dugum *kok = new dugum; // Listenin kokunu olustur
dugum *gosterici = NULL; // Gostericiyi olustur
// BURADAN İTİBAREN ÖDEV KODLARI YAZILACAK
}
