Există un motiv puternic pentru a nu include mai multe indicii nod într-un nod de a utiliza mai mult de o structură de date?

voturi
0

Luați, de exemplu, asignarea lucrez. Suntem de a utiliza un arbore binar de căutare pentru o singură bucată dintr-un set de date și apoi o listă legată de o altă piesă din set. Metoda propusă de profesor a fost:

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

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

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

În cazul în care datele sunt o clasă care conține datele fiecărei înregistrări. Evident, așa cum este configurat, un treeNode nu poate exista în lista legată.

Nu ar fi mult mai simplu de:

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

atunci putem declara:

node * listHead;
node * treeRoot;

și includ atât algoritmi de inserție în clasă.

Este ceva ce mi-e dor?

Întrebat 09/03/2011 la 19:33
sursa de către utilizator
În alte limbi...                            


3 răspunsuri

voturi
0

Poti face asta, dar sunt pierzi memoria cu indicii suplimentare. De asemenea, acesta tinde sa fie mai confuze să se amestece tipuri de genul asta. Am dreptate presupunând că datele sunt puse fie în listă sau puse în copac, dar nu a introdus în ambele? Nu e prea mult un motiv pentru a le ambele utilizează aceeași structură în cazul în care acestea sunt diferite tipuri de date, oricum. Dacă introduceți aceleași date în ambele tipuri, ați putea trece de la traversării copac pentru a traversarii lista dacă ați avut orice utilizare pentru o astfel de acțiune.

Din moment ce introducerea datelor în ambele liste, ar economisi memorie pentru a utiliza structura nod compozit. Mi-ar insera în arborele binar în primul rând, apoi introduceți nodul alocat în lista legată. Nu se va termina într-adevăr cu o listă pur legată sau un arbore binar de căutare, dar ar putea să fie traversate ca nici unul.

Publicat 09/03/2011 la 21:08
sursa de către utilizator

voturi
0

De fapt, elementele de date urmează să fie inserate în ambele liste. Scopul (lumesc) al misiunii este de a sorta seturile de date în două elemente diferite din set.

Deci, cu care a spus, nu aș fi de economisire de memorie? Combinând cele 2 noduri ajung cu 5 indicii, dacă am lăsat să le separe aș fi folosind 6. De asemenea, am într-adevăr doar un singur grup de date în acest fel. dacă am avut 250 de elemente de date pentru a ține evidența, aș avea un grup de 1250 indicii în loc de 2 liste de 750. Poate sunt intelegerea gresita ceea ce de fapt se alocă cu apeluri pointer.

Publicat 09/03/2011 la 21:59
sursa de către utilizator

voturi
0

Care a fost răspunsul?

Dacă datele dvs. este mai mică (Hmmm) megaocteți, nu vă faceți griji cu privire la consumul de memorie. 1 sau 2 gigaocteți este tipic în computerele normale de azi.

Cât de mari sunt elementele? 32 char? 64K multimedia comprimat? Ceva mare?

Cât de rezonabil este de a organiza un articol folosind ambele tehnici? În cazul în care datele sunt într-adevăr la fel, atunci o structură de 5 pointer este interesante- cineva ar putea găsi un nod într-o singură comandă și apoi parcurge nodurile legate în cealaltă prin care se dispune.

Sunt articole fără legătură, unele cretă, niște brânză? Sunt multidimensionale? dosarele de personal? descrieri de fișiere audio? Rețete?

La școală, un profesor bun este încercarea de a vă oferi o experiență cu tehnici și discipline comune. La fel ca și clasa de artă, sau compoziție. Creion, pasteluri, 5 punctul eseu. Deci, profesorul ar putea dori să scrie două clase diferite și constructori. Utilizați un struct pentru o parte a datelor, unul diferit pentru alte date. Sau la fel. Doar pentru că.

În afara școlii, datele vine într-un format și sunt dorite operații pe el / cu ea. „Cazuri de utilizare“ sunt povești despre modul în care se utilizează date, ceea ce trebuie să fie păstrate, ce algoritmi sunt utilizate.

Punctul de acest lucru ar putea fi căutarea bimodală, 2 perechi de indicii ortogonale. S-ar putea fi Cooperative, în cazul în care fiecare element este asssociated cu o listă sau un copac, dar nu ambele în același timp. S-ar putea fi o rafala de subseturi lightwieght, copaci și liste, care sunt comparate și ...

Când aveți dubii, „structuri de date + algoritmi = programe“. Dar plătește să știe ce punct profesorul încearcă să facă, și dacă doriți să urmeze exemplul. (De obicei, în școală, faci.)

Publicat 12/04/2011 la 01:51
sursa de către utilizator

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