Tamamen işlevsel standart bir ikili yığının herhangi bir uygulaması var mı? Biliyorum ki ilginç yığınlar var, örneğin: Binomial, sol yığın, hepsi işlevsel bir uygulamaya sahip, sadece standart ikili yığınları uygulamak için bir yol var mı, yoksa immutable tipinden dolayı bunu uygulamak için Array kullanmak zorunda mıyız? Teşekkürler!Tamamen işlevsel bir standart ikili yığın (ocaml veya haskell) nasıl uygularım?
cevap
Yığını uygulamak için bir diziye ihtiyacınız yoktur, bunu bir ağaç yapısı olarak uygulayabilirsiniz.
data Heap t = Node t (Heap t) (Heap t) | Nil
dezavantajı
her yığın işlemi için düğümlerinO(log N)
yeniden tahsis kadar sonudur ve bir zorunluluk dizi tabanlı uygulama önbellek mevkiinde hiçbirine sahip olmayacaktır. Bu işlemle bazı işlemler zor olacaktır, ancak yığınla ne yapmak istediğinizi bilmediğimden, size daha spesifik bir yön gösteremem. Biz parmak ağaçlar gibi özel fonksiyonel yapılara sahip
nedeni normalde en soldaki yaprak düğümü alınırken gibi yığınları üzerinde yapmazlar belirli işlemleri hızlandırmak için olduğunu. Haskell'deki zorunlu diller için öğrendiğiniz aynı veri yapılarının çoğunu yalnızca güncellenen yöntemlerle değiştirerek kullanabilirsiniz.
Teşekkürler Dietrich, uygulamak istediğim operasyon, bu operasyonu işlevsel bir tarzda uygulamak için en iyi yolun hangisi olduğundan emin değil, kökten rastgele yeni bir değer aşağı itiyor. – Ang
Shameless fiş: Braun trees tamamen işlevsel bir dakika-yığın (veya öncelik sırasına) için mükemmel adaydırlar.
Bu yazıda A Functional Approach to Standard Binary Heaps veya bu kaynaktan Heap.scala açıklanan fikirler bakabilirsiniz.
- 1. Tamamen işlevsel yumuşak yığın
- 2. Tamamen işlevsel android veri tablosu
- 3. Fonksiyonel Saflık ben Haskell öğrenme üzerinde çalışıyorum, ben o tamamen işlevsel bir dildir anlıyorum Haskell
- 4. Haskell işlevsel bağımlılık çakışması
- 5. Haskell Bir JSON API'sine karşı İşlevsel Testler
- 6. Haskell benzeri işlevsel bağımlılıklar nasıl oluşturabilirim
- 7. Hangi Javascript işlevsel kitaplığı: Underscore veya wu.js veya İşlevsel veya ...?
- 8. nasıl Haskell ikili veya hex tamsayı değişmezleri yazdırmak için?
- 9. Haskell ikili uyumluluğu
- 10. Haskell yığın ve sürüm kontrolü
- 11. OCaml
- 12. Haskell veya OCaml için "dbg" gibi bir izleme hata ayıklayıcısı var mı?
- 13. LibGDX Şu anda şöyle tamamen işlevsel bir kaydırma bölmesi vardır
- 14. Haskell standart kütüphanesinin yazdırılabilir versiyonu
- 15. Başım ağrıyor OCaml
- 16. Netbeans otomatik Tamamen yavaş/işlevsel olmayan Netbeans 6.8 En son
- 17. haskell - Ana olmayan bir modülden ikili nasıl oluşturulur?
- 18. C: İkili Yığın minimum elemanının kaldırılması
- 19. Büyük yapılandırılmış ikili veriyi Haskell ile depolama
- 20. Prototipler ile işlevsel işlevsel devralma
- 21. javafx & fxml: GUI'mdeki bir bölüme veya etikete nasıl kenarlık uygularım?
- 22. OCaml
- 23. Tamsayı bir ByteString'e nasıl dönüştürülür Haskell
- 24. OCaml
- 25. Bir Kimliği tamamen nasıl kaldırırım
- 26. Bir çalışan iş parçacığındaki yığın taşmasını nasıl önleyebilirim veya kurtarırım?
- 27. işlevsel derleme dili
- 28. WPF'de özel bir Fırçayı nasıl uygularım?
- 29. OCaml
- 30. Haskell standart kütüphanesinde neden bir scanl 'fonksiyonu yok?
Bu gerçekten bir soru değil. Muhtemelen, "Tamamen işlevsel bir ikili yığını nasıl uygulayabilirim?" Gibi bir şey olarak yeniden düşünmelisiniz - bu formülasyonla ilgili yararlı ve anlayışlı cevaplar almanız daha olasıdır. –
@TikhonJelvis teşekkürler – Ang
Bu bağlıdır. Tamamen işlevsel versiyonun veri için aynı yapı türünü kullanmasını bekliyor musunuz? Belirli operasyonlar için aynı şekilde davranın mı? Bu şeylerin farklı olmasına izin verilirse, gerçekten "ikili yığın" olarak adlandırılabilir mi? –