C++ Bağlantılı Liste Problemi
-
merhaba arkadaşlar,
c++ ödevimde şöle bi problem var, bir telefon defteri oluşturup tekli bağlantılı liste yöntemiyle kayıt tutuyoruz. kayıtları alfabetik olarak sıralıyoruz. bu kayıtlar güncellenebiliyor, ancak güncellendiğinde mesela ismi zeynep olup da 20. sırada olan bir isim adı ayşe diye değiştirildiğinde de yine 20. sırada kalıyor. Bunu da güncellemem gerekiyor. Bağlantılı liste yapısıyla bunu yapmalıyım birkaç gündür uğraşıyorum beceremedim. Beynim sulandı. Yardımlarınızı bekliyorum.
Normalde yazdığım kayıt güncelleme kodu;
void Liste::guncelle(int kayitno, Tel_dugum *yeni){
Tel_dugum *tara;
int sayac = 1;
tara = bas;
while(tara && (sayac < kayitno)){
sayac++;
tara = tara->sonraki;
}
if (tara){
strcpy(tara->ad, yeni->ad);
strcpy(tara->telno, yeni->telno);
}
else
cout << "Guncellenecek kayit numarasi hatali.\n";
}kayıt ekleme kodu;
void Liste::ekle(Tel_dugum *eklenecek){
Tel_dugum *tara, *arka, *yeni;
tara = bas;
yeni = new Tel_dugum;
strcpy(yeni->ad, eklenecek->ad);
strcpy(yeni->telno,eklenecek->telno);
yeni->sonraki = NULL;
if (bas == NULL){ //ilk dugum ekleniyor
bas = yeni;
dugumsayisi++;
return;
}
if (strcmp(yeni->ad,bas->ad) < 0){ //Liste basina ekle
yeni->sonraki = bas;
bas = yeni;
dugumsayisi++;
return;
}
while (tara && (strcmp(yeni->ad,tara->ad) > 0)){
arka = tara;
tara = tara->sonraki;
}
if (tara){ //Araya ekleme
yeni->sonraki = tara;
arka->sonraki = yeni;
}
else //Sona ekleme
arka->sonraki = yeni;
dugumsayisi++;
}değişiklik bu kodlarda yapılacak. Şimdiden teşekkürler...
-
strcpyden olsa gerek kaynaklanıyo gibide problem yinede bakmak lazım dikkatlice
