Er det sterk grunn til ikke å inkludere flere node pekere i en node som skal brukes i mer enn en datastruktur?

stemmer
0

Ta oppdraget jeg jobber med for eksempel. Vi skal bruke et binært søketre for en del av et sett med data og deretter en lenket liste for en annen brikke i settet. Den foreslåtte metoden av professor var:

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

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

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

Hvor data er en klasse som inneholder opplysninger om hver post. Selvsagt som det er satt opp, kan en treeNode ikke eksisterer i lenket liste.

Ville det ikke være mye enklere å:

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

da kan vi erklære:

node * listHead;
node * treeRoot;

og inkluderer både innsetting av algoritmer i klassen.

Er det noe jeg mangler?

Publisert på 09/03/2011 klokken 18:33
kilden bruker
På andre språk...                            


3 svar

stemmer
0

Du kan gjøre det, men du kaster bort minnet med ekstra pekere. Også, det pleier å være mer forvirrende å blande typer sånn. Er jeg rett i å anta at dataene er enten satt i listen eller satt i treet, men ikke satt inn begge? Det er egentlig ikke mye grunn til å ha dem begge bruker samme struktur hvis de er forskjellige datatyper uansett. Hvis du setter inn de samme dataene til begge typer, kan du potensielt bytte fra traversering treet til traversering listen hvis du hadde bruk for en slik handling.

Siden du setter inn data i begge listene, ville det spare minne til å bruke kompositt nodestruktur. Jeg vil sette inn i det binære tre første, og deretter sette den tilordnede node inn i kjedet liste. Du ville egentlig ikke ende opp med en ren lenket liste eller et binært søketre, men det ville være i stand til å bli krysset som ett.

Svarte 09/03/2011 kl. 20:08
kilden bruker

stemmer
0

Egentlig dataelementene skal settes inn i begge listene. Den (dagligdagse) Hensikten med den oppgave er å sortere datasettene i to forskjellige elementer i settet.

Så med det sagt, ville ikke jeg være lagringsminne? Kombinere 2 noder jeg ender opp med 5 tips, hvis jeg forlot dem atskilt Jeg vil bruke 6. Også jeg egentlig bare har en gruppe av data på denne måten. hvis jeg hadde 250 dataelementer for å holde styr på, jeg har en gruppe av 1250 tips i stedet for 2 lister over 750. Kanskje jeg misforståelse hva som faktisk blir tildelt med peker samtaler.

Svarte 09/03/2011 kl. 20:59
kilden bruker

stemmer
0

Hva var svaret?

Hvis dataene er mindre enn (hmmm) megabyte, ikke bekymre deg om minneforbruk. 1 eller 2 gigabyte er typisk i vanlige datamaskiner i dag.

Hvor store er de elementene? 32 røye? 64k av komprimert multimedia? Noe stort?

Hvor fornuftig er det å organisere ett element med begge teknikker? Hvis dataene er egentlig det samme, kunne da en fem peker struktur er interessant-noen finner en node i en bestilling og deretter bla relaterte noder i andre bestilling.

Er elementer som ikke er relatert, noen kritt, litt ost? Er de flerdimensjonale? personell poster? Lydfil beskrivelser? Oppskrifter?

På skolen er en god lærer prøver å gi deg erfaring med vanlige teknikker og disipliner. Akkurat som kunst klasse, eller sammensetning. Blyant, pastell, fem avsnitt essay. Så læreren kanskje ønsker du å skrive to forskjellige klasser og konstruktører. Bruk av en struct for en del av de data, annen for andre data. Eller det samme. Bare fordi.

Utenfor skolen, kommer data i et format og det er drift ønsket på den / det. "Bruk saker" er historier om hvordan informasjonen blir brukt, hva som har å bli holdt, hva algoritmer brukes.

Poenget med dette kan være bimodal søking, 2 par ortogonale pekere. Det kan være LO, hvor hvert element er asssociated med en liste eller et tre, men ikke begge deler samtidig. Det kan være en forfjamset av lightwieght undergrupper, trær og lister, som blir sammen og kontrast ...

Når du er i tvil, "datastrukturer + algoritmer = programmer". Men det lønner seg å vite hva poenget læreren prøver å gjøre, og om du ønsker å følge sin leder. (Vanligvis, på skolen, gjør du.)

Svarte 12/04/2011 kl. 00:51
kilden bruker

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