Czy istnieje silny powód, aby nie obejmować wiele wskazówek węzła w węźle do wykorzystania w więcej niż jednej strukturze danych?

głosy
0

Weźmy na przykład przypisanie pracuję nad. Jesteśmy użyć wyszukiwarki binarne drzewo na jednym kawałku zestawu danych, a następnie połączonej listy do innej części w zestawie. Proponowana metoda przez profesora było:

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

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

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

W przypadku gdy dane jest klasą zawierającą szczegółowe każdego rekordu. Oczywiście jak to skonfigurować, o TreeNode nie może istnieć w połączonej listy.

Czy nie byłoby o wiele prostsze:

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

Następnie możemy zadeklarować:

node * listHead;
node * treeRoot;

i obejmują zarówno algorytmów wprowadzeniem do klasy.

Czy jest coś, czego mi brakuje?

Utwórz 09/03/2011 o 19:33
źródło użytkownik
W innych językach...                            


3 odpowiedzi

głosy
0

Można to zrobić, ale tracisz pamięć z dodatkowych wskaźników. Ponadto, wydaje się być bardziej skomplikowane do różnych typów, takich jak to. Czy mam rację zakładając, że dane są albo umieścić w wykazie lub umieścić na drzewie, ale nie włożony do obu? Nie ma naprawdę wiele powodów, by mieć je obie używają tej samej struktury, jeżeli są różne typy danych i tak. Jeśli wstawiasz te same dane w obu typach, potencjalnie można przełączyć z przejeżdżające drzewo na przejeżdżające listę gdybyś miał zastosowanie dla takiego działania.

Skoro jesteś wstawienie danych do obu list, byłoby zaoszczędzić pamięć używać złożoną strukturę węzła. Chciałbym wstawić do drzewa binarnego, następnie włóż przydzieloną węzeł w połączonej listy. Nie byłoby naprawdę skończyć z czystego połączonej listy lub wyszukiwania binarnego drzewa, ale byłoby w stanie wykonać ruch jak jeden z nich.

Odpowiedział 09/03/2011 o 21:08
źródło użytkownik

głosy
0

Faktycznie, elementy danych mają być wstawione do obu listach. Przycisk (przyziemne) celem zadania jest do sortowania zestawu danych w dwóch różnych elementów zestawu.

Więc z tym powiedział, nie będę oszczędność pamięci? Łączenie 2 węzły I skończyć z 5 wskaźników, gdybym pozostawił je oddzielnie będę używając 6. Także ja naprawdę mają tylko jedną grupę danych w ten sposób. gdybym miał 250 elementów danych, aby śledzić, musiałbym jedną grupę 1250 wskaźniki zamiast 2 list 750. Może jestem nieporozumienie co faktycznie dostaje przydzielone z połączeń wskaźnika.

Odpowiedział 09/03/2011 o 21:59
źródło użytkownik

głosy
0

Jaka była odpowiedź?

Jeśli dane jest mniejsza niż (hmmm) megabajtów, nie martw się o zużycie pamięci. 1 lub 2 GB jest typowe w normalnych komputerach dziś.

Jak duże są te elementy? 32 char? 64k sprężonego multimediów? Coś dużego?

Jak rozsądne jest, aby zorganizować jeden element, zarówno z wykorzystaniem technik? Jeżeli dane są naprawdę takie same, wówczas struktura 5 wskaźnik jest interesting- ktoś mógł znaleźć węzeł w jednym zamówieniu, a następnie przeglądać związane węzły w drugiej kolejności.

Są to przedmioty, niektóre niezwiązane kreda, jakiś ser? Są wielowymiarowe? Dokumentację personelu? Opisy plików audio? Recepty?

W szkole, dobry nauczyciel stara się dać wystąpić z powszechnych technik i dyscyplin. Podobnie jak w klasie sztuki, lub kompozycji. Ołówek, pastele, 5 ustęp esej. Więc nauczyciel może chcieć, aby napisać dwie różne klasy i konstruktorów. Użyj jednego struct dla jednej części danych, inną dla pozostałych danych. Lub takie same. Właśnie dlatego.

Poza szkołą, dane jest w formacie i są żądane operacje na nim / z nią. „Przypadki użycia” to historie o tym, jak dane są wykorzystywane, co ma być na bieżąco, co algorytmy są wykorzystywane.

Punkt ten może być bimodalny wyszukiwanie, 2 pary prostopadłych wskaźników. Może to być związki, w których każdy element jest asssociated z listy lub drzewa, ale nie oba jednocześnie. To może być poruszenie lightwieght podzbiorów, drzew i listy, które są porównywane i skontrastowane ...

W przypadku wątpliwości, „Algorytmy + struktury danych = programy”. Ale warto wiedzieć, co punkt nauczyciel stara się zrobić, i czy chcesz podążać za ich prowadzenie. (Zwykle w szkole, robisz).

Odpowiedział 12/04/2011 o 01:51
źródło użytkownik

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