16. august 2004 - 16:42Der er
27 kommentarer og 1 løsning
linked list ider
hey
jeg har lige programmeret en linked list, som inderholder disse funktioner:
int main(); int insert_begin(char *name, int location); int insert_end(char *name, int location); int count_elements(struct node *head); int output_all_nodes(struct node *head); int invoke_all_nodes(struct node *head); struct node* CopyList(struct node *head); int delete_list(struct node *head); int search(char *name,int location);
indtil vidre er det bare en prototype som skal ende med at være OOP. Men jeg kunne godt tænke mig nogle gode ider til hvad man kunne uddvide den med rent funktions mæssigt. Jeg ved der mangler en sort, så den er taget :=)
jeg synes i hvert fald du skal slette output_all_nodes, da det ikke rigtig har noget med listen at gøre hvordan den bliver skrevet på skærmen. det skal brugeren selv klare. og ja, som arne siger, så kig på STL's list.
Der mangler måske funcktioner til at fjene et enkelt element fra listen, enten først eller sidst. Du kunne også overveje om du vil kunne insætte og fjerne midt i listen.
Hvis jeg skulle indsætte en ny node midt i listen, ville det så ikke være temlig langsom at køre alle de enkelte noder igennem for at komme til en bestemte ?
Jo, du ville være nødt til at løbe listen igennem, hvis den er meget stor vil det tage nogen tid, men i praksis vil det måske ikke være et stort problem.
Men hvis du ønsker en sorteret liste er du nok nødt til det. Du kan også få brug for det hvis du vil bruge listen til f.ex. en medlems kartotek, man kan ikke gå ud fra at det altid er den ældste eller nyeste medlem der opsiger sit medlemsskab.
Du kan også lave et binært træ, men det er en anden historie.
I et træ har hver node en left og en right node og strukturen kommer til at ligne et træ.
I et træ gemmer man noderne efter en nøgle, dette kan være et navn eller et nummer. Når man skal finde et navn i træet bruger man denne nøgle til at bestemme ruten i træ'et.
Hvis man har en linket liste med 1000 noder vil man i værste tilfælde være nødt til at lede alle 1000 igennem. I et træ ville man højest skulle checke 10 elementer fordi 2^10 er 1024.
Grundstammen er ret let, men der er flere ting der kan være besværlige: 1: Det er lidt besværligt at løbe listen igennem fra en ende af. 2: Det er lidt svært at slette tilfældige noder. 3: Hvis nøglen ikke er random kan træet blive skævt og man vil være nødt til at balancere det hvilket er lidt bøvlet.
Whatever er en struct/class der indeholder det der skal gemmes, list er en stl-kontainer (en template class), der har metoder som push_back og pop_front til at operere på listen, std:: namespace, og listen kommer til at hedde MyList.
Og include algorithm og iterator, samt fjene std::endl fra << operatoren
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.