folder Tahribat.com Forumları
linefolder C - C++
linefolder C++ Bağlantılı Liste Problemi



C++ Bağlantılı Liste Problemi

  1. KısayolKısayol reportŞikayet pmÖzel Mesaj
    ZaGaNoS
    ZaGaNoS's avatar
    Kayıt Tarihi: 16/Nisan/2007
    Erkek

    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...


    şartlar ne olursa olsun, serinkanlı kalmak kadar bir insana bir diğeri karşısında üstünlük sağlayan bir şey daha yoktur.
  2. KısayolKısayol reportŞikayet pmÖzel Mesaj
    yafa13
    yafa13's avatar
    Kayıt Tarihi: 01/Kasım/2007
    Erkek
    strcpyden olsa gerek kaynaklanıyo gibide problem yinede bakmak lazım dikkatlice
Toplam Hit: 1782 Toplam Mesaj: 2