July 23, 2012

Yığın konularında gerçekten zayıfım bundan dolayı sadece seyirci kalıyorum :)

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

July 23, 2012

Peki yığın elemanlarını oldukları sırada yazdırmanın bir yöntemi yok mu acaba.

   for ( ; !yığın.empty(); yığın.removeFront()) {
       write(yığın.front, " ");
   }

Örneğin bu şekilde yazdırdığımızda 'removeFront()' en büyük elemanı yığından çıkarıyor. Bu yüzden de elemanlar ikili yığında oldukları sırada yazdırılmıyorlar.

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

July 23, 2012

Hem ikili yığıt hem de ikili ağaç sonuçta elemanları sıralı olarak veriyorlar ama iç yapıları aynı değil. Temel bir fark:

  • İkili ağaçta soldaki elemanlar bu düğümden öncedir ve sağdaki elemanlar bu düğümden sonradır.

  • İkili yığıtta ise "aşağıdaki elemanlar bu düğümden sonradır" kuralı geçerli. Gösterdiğin ağaç gösterimleri de buna uyuyor: 4'ün altındaki her düğüm 4'ten sonra; 17'nin altındaki her düğüm 17'den sonra; vs.

Ali

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

July 23, 2012

O değerler zaten ikili yığın olabilirler. BinaryHeap'e depo olarak onları verdiğimizde sıralamak için ayrıca zaman kaybetmeyecek demektir:

   auto depo = [ 4, 9, 6, 17, 26, 8, 16, 19, 69, 32, 93, 55, 50];
   auto yığın = BinaryHeap!(int[], "a > b")(depo);
   writeln(yığın);

Çıktısında depo olarak aynı değerlerin durduklarını görüyoruz:

'BinaryHeap!(int[],"a > b")(Tuple!(int[],"_store",ulong,"_length")([4, 9, 6, 17, 26, 8, 16, 19, 69, 32, 93, 55, 50], 13))'

Ali

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

July 23, 2012

Başka yolunu bilmiyorum ve olduğunu da sanmıyorum. Her removeFront()'tan sonra asıl diziyi yazdırırsan elemanların değiştiklerini göreceksin.

Bildiğim kadarıyla ikili ağaçta olduğu gibi bir hep sıralılık durumu yok. Anlaşılan, ikili yığın da yığıt (stack) gibi hep baştaki elemana erişmek için uygun.

Ali

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

1 2
Next ›   Last »