Harika bir makale için yazara teşekkürler!
başka kim-ne var? eksik bir fikir gibi.
Dolayısıyla, çift bağlantılı bir liste için bir düğümün yetenekleri tek bağlantılı bir düğümün yeteneklerine benzer olacaktır, ancak yine de bir önceki düğüme bir işaretçi işlemeniz gerekir.
Tek bağlantılı bir düğümün yeteneklerine sahip olmak için önceki düğüme bir işaretçi işlemek gerekli midir? Yazar iletmek istediği noktayı yakalamıştır, ancak ifadenin kendisi pek iyi değildir.....
Şekil 3 Halka iki bağlantılı listeiçin düğümler
1) en üstteki işaretçi - ok biraz eğri
2) Bunun makalelerin tarzı olabileceğinin farkındayım - ancak şeklin açıklaması çok küçük yazı tipinde ve oldukça loş (zayıf görüşün kişisel görüşü).
Çift bağlantılı bir listenin ihtiyaçlarına hizmet edecek böyle bir düğüme de ihtiyacımız olacak. Önceki formdan farkı , bir önceki düğümeatıfta bulunan başka bir işaretçi tutmasıdır. Ve doğal olarak, listenin baş elemanının böyle bir düğümüNULL'a eşit olacaktır.
1) Öncekiformdan - neyden? Ne kadar önceki? Neden önceki ile yazarın "Tek bağlantılı bir liste için düğüm" demek istediğini araştırmalıyım, ya da belki yanılıyorum.
2) " listenin baş elemanının düğümü NULL'a eşit olacaktır". Düğüm mü yoksa işaretçi mi?Belki dedahaönceki "Bir listede öğeleri değil düğümleri saklayabilirsiniz." ifadesi göz önüne alındığındaşöyle demek daha doğru olur:
" çift bağlantılı bir listenin baş düğümünün işaretçilerinden biri NULL'a eşit olacaktır" .
Ancak kuyruk düğümünde, bir sonraki düğüme giden bağlantı boş olmayacaktır, çünkü baş işaretçi ile doldurulacaktır.
1) referans olmayacak- kim-ne olmayacak ???? davalar tutmuyor
2) Ancak kuyruk düğümünde, bir sonraki boşluğa (kim-ne ????) referans olmayacaktır. tamamlanmamış düşünce
3) Bu (referans) bir indeks ile doldurulacaktır. Bağlantı işaretçi tarafından mı doldurulacak, yoksa işaretçinin hala bir yerde bir referansı mı olacak ????.
Silme işlemlerine gelince, bunlar add grubundakilerin neredeyse aynısıdır:
- baş düğümü sil;
- kuyruk düğümünü sil;
- listede belirtilen yerden bir düğümü kaldırır;
- yıkıcı.
1)add grubundanbenzer (kim-ne????) olanları pratik olarak kopyalıyorlar . yine eksik bir düşünce
2) belirli bir liste konumundan bir düğümü silmek, "baş düğümü silmek" ve "kuyruk düğümünü silmek" için genel bir durum değil midir??? benzer şekilde add için
3)" Silmeişlemleriile ilgili olarak " ve ondan önce "Aşağıdakiler ekleme yöntemleri olarak düşünülebilir:" (orada yöntemler, burada işlemler - aynı formatı istiyorum).
Bu, makalenin bu giriş bölümlerinin kendisi için oluşturulduğu cahil bir kişinin giriş bölümü hakkındaki kişisel görüşüdür.
Ben beğendim. Teşekkür ederim. Okuduktan sonra kendi yerinizde uygulayabileceğiniz fikirler edinmeniz güzel. )
tol64, yetkili bir uzmanın görüşü için teşekkürler :-)
Kendimi bir uzman olarak görmediğim gibi bir otorite olarak da görmüyorum. Ve bu alçakgönüllülükten değil, gerçekten öyle. ))) Burada programlama, matematik ve ticaret konusunda kat kat daha deneyimli programcılar var. Ve hala yüzmek ve yüzmek zorundayım. )))
Otoritenin öznel bir şey olduğunu düşünüyorum. Bir ülkenin egemenliğinin başka bir ülke tarafından tanınması gibi....
Alıntı:
Otorite, öznenin (taşıyıcının) olağanüstü başarılarının, bilgisinin, becerilerinin, yeteneklerinin, toplumdaki özel konumunun tanınmasından oluşur...
Yani, sizinki benim tarafımdan tanınıyor :-)
tol64, yeni makalelerinizi bekliyoruz.
- ru.wikipedia.org
İşte veri kümesinin elemanlarına erişim örneği için böyle bir kod:
CList elemanlarına log2(N) karmaşıklığında ikili erişimi nerede buldunuz!?
CList bir listedir ve log2(N) karmaşıklığındaki ikili erişim, CurrentIndex +/- (CurrentIndex/2) indeksine sahip bir düğüme anlık bir atlama gerektirir; burada CurrentIndex listedeki geçerli düğümdür.
CList uygulaması, sıralama durumunda gerçekten de CurrentIndex +/- (CurrentIndex/2) düğümüne başvurarak bir öğe arayan standart QuickSearch() işlevini kullanır. Ancak, bu düğümün kendisi GetNodeAtIndex() işlevi tarafından aranır ve içinde hiçbir mucize yoktur. Erişim işleminin tüm karmaşıklığı ona, özellikle de bu dizelere düşer:
if(revers) { //--- sağdan sola doğru arama for(;i>index;i--) { result=result.Prev(); if(result==NULL) return(NULL); } } else { //--- soldan sağa doğru arama yapın for(;i<index;i++) { result=result.Next(); if(result==NULL) return(NULL); } }
Bunlara bakıldığında, bir elemanı aramanın karmaşıklığının limitte O(N/2) olduğu açıkça görülür, çünkü liste çift yönlüdür, bu nedenle uçlardan birinden bir elemana erişim N/2 geçişi aşmayacaktır. Yazarın bu konuda bir makale yazmadan önce algoritmayı daha iyi anlaması tavsiye edilir.
Kendi deneyimlerime dayanarak söyleyebilirim ki, verilerle çalışmak neredeyse her zaman onları aramak ve sıralamakla bağlantılı olduğundan, klasik CList 'i gerçek görevler için kullanmak neredeyse her zaman verimsizdir. Liste, her şeyden önce, dizine göre erişimin listeye göre erişimle birleştirildiği birleşik koleksiyonlarda güçlüdür.
Bazı nedenlerden dolayı, çok az kişi bir işaretçi geçişinin indeksle doğrudan adreslemeden çok çok daha yavaş olduğu gerçeğini düşünür. result.Next() üzerinden bin kez geçmek, for içinde dizin üzerinden bin kez geçmekten çok daha yavaştır.
Bir koma.
Görüntülerden başlayarak. İşaretçi veriye değil düğüme gider, veri düğümün sadece bir parçasıdır, yani uygulama ile bir çatışma ve potansiyel karışıklık vardır.
Adil olmak gerekirse, metin çoğunlukla normaldir.
Uygulama üzerine. Bu tür şeyler şablonlar tarafından uygulanır. STL'de kapsayıcıların temsilinin en uygun çeşidi, burada yineleyiciler ve funktörler ile bir başarısızlık olsa da, muhtemelen bir şeyler düşünebilirsiniz.
Sonuç olarak, boş sanal yöntemleriniz sadece anlaşılmaz değil, aynı zamanda basitçe vryviglaz görünüyor. ) sayfa sıralaması teslim edildi. Bazı yöntemlerin uygulanması ve hatta bildirilmesi sorgulanabilir ve hatta kafa karıştırıcıdır.
Sıfır kapsülleme.
Karmaşıklık ve listedeki ikili(!) arama(! gg) ile ilgili açıklamalar sona erdi.
Sonuç olarak, elimizde HER ŞEY anlaşılmaz ve uygunsuz, öğrenmek için örnek olarak bile kullanılamayan (imho) bir saçmalık var.
Alınma ) programcı olmak istiyorsan NORMAL programlamayı öğren. Bunu çok daha iyi uygulayabilirsiniz.
Bunlara bakıldığında, bir elemanı bulmanın karmaşıklığının O(N/2) sınırında olduğu hemen anlaşılır, çünkü liste çift yönlüdür, bu nedenle bir uçtan bir elemana erişmek N/2 geçişi aşmayacaktır. Yazarın bu konuda bir makale yazmadan önce algoritmayı daha iyi anlaması iyi olacaktır.
Ayrıca hafızanızı tazelemenizde fayda var, yukarıda yazılan O, ilk olarak yanlış hesaplanmış ve ikinci olarak yanlış yazılmıştır.
_____________________________________
İşin en ilginç yanı ise bunun en kötü kaynak makalesi olmaktan çok uzak olması.
...
Alınmayın) programcı olmak istiyorsanız NORMAL programlamayı öğrenin. Bunu çok daha iyi anlayabilirsiniz.
Ayrıca hafızanızı tazelerseniz iyi olur, yukarıda yazılan O, birincisi yanlış hesaplanmış, ikincisi yanlış yazılmış.
...
- Ücretsiz alım-satım uygulamaları
- İşlem kopyalama için 8.000'den fazla sinyal
- Finansal piyasaları keşfetmek için ekonomik haberler
Gizlilik ve Veri Koruma Politikasını ve MQL5.com Kullanım Şartlarını kabul edersiniz
Yeni makale MQL5 Programlama Temelleri: Listeler yayınlandı:
Alım satım stratejisi geliştirme için programlama dilinin yeni sürümü olan MQL [MQL5], önceki versiyona [MQL4] kıyasla daha güçlü ve etkili özellikler sunar. Avantaj, esasen nesne yönelimli programlama özelliklerinde yatmaktadır. Bu makale, düğümler ve listeler gibi karmaşık özel veri türleri kullanma olasılığını inceler. Ayrıca MQL5'te pratik programlamada listelerin kullanımına bir örnek sağlar.
Listeler, öğeler yerine düğümleri depolamanıza izin verir. Düğüm, iki bölümden oluşan bir veri türüdür.
İlk kısım bir veri alanıdır ve ikinci kısım diğer düğümler ile bağlantılar için kullanılır (Şekil 1). Listedeki ilk düğüme "baş", listedeki son düğüme "kuyruk" denir. Kuyruk bağlantısı alanı bir NULL referansı içerir. Temel olarak listede daha fazla düğüm bulunmadığını belirtmek için kullanılır. Belirli bir amaç için üretilen diğer kaynaklar, listenin baştan sonra geri kalanını 'kuyruk' olarak adlandırır.
Şek. 1 Tek bağlantılı listedeki düğümler
Tek bağlantılı liste düğümlerinin yanı sıra, başka düğüm türleri de vardır. Çiftli bağlantılı bir listedeki bir düğüm belki de en yaygın olanıdır.
Yazar: Denis Kirichenko