Birden fazla veri yapısında kullanılacak bir düğüm birden düğüm işaretçiler dahil etmemeye güçlü bir nedeni var mı?

oy
0

Örneğin ben üzerinde çalışıyorum atama atın. Biz bir veri setinin parçası ve sonra sette başka bir parça için bir bağlantılı liste için ikili arama ağacı kullanmak konum. profesör tarafından önerilen yöntem oldu:

struct treeNode
{
    data * item;
    treeNode *left, *right;
};

struct listNode
{
    data * item;
    listNode *next, *prev;
};

class collection
{
public:
         ........
}

Burada veriler, her bir kaydın özellikleri içeren bir sınıftır. kurulduktan olarak Açıkçası, bir TreeNode bağlantılı listede var olamaz.

o çok daha kolay olmaz mıydı:

struct node
{
    data * item;
    node *listNext, *listPrev, *treeLeft, *treeRight;
};

o zaman bildirebilirsiniz:

node * listHead;
node * treeRoot;

ve sınıfa iki ekleme algoritmaları bulunmaktadır.

Eksik bir şey var mı?

Oluştur 09/03/2011 saat 19:33
kaynak kullanıcı
Diğer dillerde...                            


3 cevaplar

oy
0

Bunu yapabilirsin, ama ekstra işaretçileri ile bellek harcıyorsun. Ayrıca, böyle türlerini karıştırmak için daha da kafa karıştırıcı olma eğilimindedir. Veri ağaca listeye konur ya konur ya varsayarak içinde haklı mıyım, ancak her iki yerleştirilir olmasın? onlar zaten farklı veri türlerini ise ikisini aynı yapıya kullanmasını sağlamak için çok nedeni gerçekten yok. Her iki tip olarak aynı veri ekleme yapıyorsanız, potansiyel olarak böyle bir eylem için herhangi bir kullanım olsaydı listesinde geçiş için ağaç geçme geçiş olabilir.

Eğer her iki listede veri ekleme aşamasında olduğu için, Bu sizin kompozit düğüm yapısını kullanmak bellekten tasarruf olacaktır. Sonra bağlantılı listeye ayrılan düğümü yerleştirin ilk ikili ağaca eklemek olacaktır. Gerçekten saf bağlantılı liste veya bir ikili arama ağacına ile bitirmek olmaz, ancak birbirinin benzeri geçilen mümkün olacaktır.

Cevap 09/03/2011 saat 21:08
kaynak kullanıcı

oy
0

Aslında veri öğeleri iki listede takılan edilecektir. Ödevin (sıradan) amacı setinde iki farklı unsurların veri setlerini sıralamak etmektir.

söyledi ile Yani, bellek tasarrufu olmaz? Onları ben de ben gerçekten sadece tek bir veri grubunu bu şekilde sahip 6. kullanılarak olurdu ayrı terk ederse, 5 işaretçiler ile bitirmek 2 düğümleri birleştiren. Ben takip etmek için 250 veri öğeleri olsaydı, 1250 işaretçiler bir grup yerine Belki ben aslında işaretçi çağrıları ile ayrılan Nelerin yanlış anlama ediyorum 750 kişilik 2 listeleri olurdu.

Cevap 09/03/2011 saat 21:59
kaynak kullanıcı

oy
0

Cevap neydi?

Veri (hmmm) megabayt azsa, bellek tüketimi hakkında endişelenmeyin. 1 veya 2 Gigabayt bugün, normal bilgisayarlar tipik bir örneğidir.

ürün ne kadar büyük? 32 karakter? Sıkıştırılmış multimedya 64k? Büyük birşey?

Her iki teknikler kullanılarak bir öğe nasıl organize edilir mantıklıdır? veri gerçekten aynıysa, o zaman 5 işaretçi yapısı ilginç gelen başka biri tarafından bir sıralamada bir düğüm bulmak ve sonra diğer sıralamada ilgili düğümleri göz olabilir.

ilişkisiz öğeleri, bazı tebeşir, biraz peynir musunuz? onlar çok boyutlu musunuz? Personel kayıtları? Ses dosyası açıklamaları? Tarifler?

Okulda, iyi bir öğretmen ortak teknikler ve disiplinler ile size deneyimi sunmak için çalışıyor. Sadece sanat sınıf veya benzeri bileşim. Kalem, pastel, 5 paragraf deneme. Yani öğretmen iki farklı sınıflar ve Kurucular yazmak isteyebilirsiniz. veriler, diğer veriler için farklı birinin bir kısmı için bir yapı kullanın. Ya da aynı. Diye.

Okul dışında veri bir biçimde gelir ve onunla / Üzerinde istenen işlemler vardır. "Kullanım senaryoları" verileri nasıl kullanıldığı hakkında hikayeler tutulacak olan ne, ne algoritmalar kullanılır vardır.

Bu nokta iki modlu arama, ortogonal işaretçiler 2 çift olabilir. Her madde aynı zamanda bir liste veya bir ağacın, ancak ikisini bağlı olarak ortaya çıkabilir Sendikalar, olabilir. Bu benzerlikleri ve farklılıkları olan lightwieght alt kümeleri, ağaçlar ve listelerine bir telaş olabilir ...

Şüpheye düşerseniz, "veri yapıları + algoritmaları = programları". Ama öğretmen yapmaya çalışıyor hangi noktada bilmek öder ve onları takip etmek isteyip. (Genellikle, okulda, var.)

Cevap 12/04/2011 saat 01:51
kaynak kullanıcı

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more