Üst işaretçi ağacı - Parent pointer tree

Image
"Etkin" bir yığın çerçevesi vurgulanmış spagetti yığını

Olarak bilgisayar biliminin , bir in-ağaç veya ana gösterici ağaç bir bir N -ary ağaç veri yapısı her bir düğüm, bir sahip olduğu gösterici onun için üst düğüm ancak bunlarla işaretçiler alt düğümler . Bir dizi yığını uygulamak için kullanıldığında , yapıya spagetti yığını , kaktüs yığını veya sahuaro yığını denir ( sahuaro'dan sonra , bir tür kaktüs). Ana işaretçi ağaçları, ayrık küme veri yapıları olarak da kullanılır .

Yapı kümesi olarak kabul edilebilir tek başına bağlantılı listeler o pay onların yapının bir parçası, özellikle de onların kuyrukları. Herhangi bir düğümden, düğümün atalarına geçilebilir, ancak başka bir düğüme geçilemez.

Derleyicilerde kullanın

Bir derleyici gibi bir dil için C açılır ve kapanır bir spagetti yığın oluşturur sembol tabloları blok temsil kapsamları . Yeni bir blok kapsamı açıldığında, bir yığına bir sembol tablosu itilir. Kapanış kaşlı ayracı ile karşılaşıldığında, kapsam kapatılır ve sembol tablosu açılır. Ama o sembol tablosu yok edilmek yerine hatırlanıyor. Ve tabii ki daha yüksek seviyedeki "ebeveyn" sembol tablosunu ve benzerlerini hatırlar. Böylece derleyici daha sonra soyut sözdizimi ağacı üzerinde çeviriler yaparken , verilen herhangi bir ifade için, o ifadenin ortamını temsil eden sembol tablosunu getirebilir ve tanımlayıcılara yapılan referansları çözebilir. İfade bir X değişkenine atıfta bulunuyorsa, önce en içteki sözlük kapsamını temsil eden yaprak sembol tablosunda, ardından ebeveynde vb. aranır.

Çağrı yığınları olarak kullanın

Spagetti yığını terimi , sürekliliği destekleyen programlama dillerinin uygulamalarıyla yakından ilişkilidir . Spagetti yığınları, değişken bağlamaları ve diğer çevresel özellikleri içeren gerçek çalışma zamanı yığınını uygulamak için kullanılır . Sürekliliklerin desteklenmesi gerektiğinde, bir işlevin yerel değişkenleri, bu işlev döndüğünde yok edilemez: kaydedilmiş bir devam, daha sonra bu işleve yeniden girebilir ve yalnızca oradaki değişkenlerin bozulmamış olmasını bekler, aynı zamanda tüm yığını da bekler. mevcut olması, böylece işlevin tekrar geri dönebilmesi. Bu sorunu çözmek için, yığın çerçeveleri bir spagetti yığını yapısında dinamik olarak tahsis edilebilir ve artık hiçbir devamlılık onlara atıfta bulunmadığında çöp toplanmak üzere geride bırakılabilir . Bu tür bir yapı aynı zamanda hem yukarı hem de aşağı funarg problemlerini çözer , bunun sonucunda birinci sınıf sözcüksel kapanışlar bu alt tabakada kolayca uygulanır.

Spagetti yığınlarını kullanan dillere örnekler:

Mainframe ' kullanarak Burroughs Büyük Sistemleri mimarisini ve çalışan MCP işletim sistemini aynı program içinde birden çok görevi spawn. Bunlar orijinal olarak ALGOL tabanlı sistemler olduğundan, iç içe geçmiş işlevleri desteklemeleri gerekir ve sonuç, görev oluşturmanın, Burroughs'un gayri resmi olarak "saguaro yığını" olarak tanımladığı yığında bir çatalla sonuçlanır .

Ayrıca bakınız

Referanslar