Forskel Mellem Arrays og Linked Lists

Anonim

Arrays vs Linked Lists

Arrays er den mest anvendte datastruktur til at gemme samling af elementer. De fleste programmeringssprog giver metoder til nemt at erklære arrayer og adgangselementer i arrays. Tilknyttet liste, mere præcist ensartet liste, er også en datastruktur, som kan bruges til at gemme samling af elementer. Den består af en række noder, og hver knude har en henvisning til den næste knude i sekvensen.

Vises i figur 1, er et stykke kode typisk brugt til at erklære og tildele værdier til en matrix. Figur 2 viser hvordan et array vil se ud i hukommelsen.

Ovenstående kode definerer en matrix, der kan lagre 5 heltal, og de er tilgængelige ved hjælp af indekserne 0 til 4. En vigtig egenskab for en matrix er, at hele arrayet er allokeret som en enkelt blok af hukommelse, og hvert element får sit eget rum i array. Når en matrix er defineret, er dens størrelse fast. Så hvis du ikke er sikker på størrelsen af ​​arrayet på kompileringstid, skal du definere et stort nok array til at være på den sikre side. Men det meste af tiden vil vi faktisk bruge mindre antal elementer, end vi har tildelt. Så en betydelig mængde hukommelse er faktisk spildt. På den anden side, hvis det "store nok array" ikke rent faktisk er stort nok, vil programmet kollidere.

En tilknyttet liste tildeler hukommelsen til dets elementer separat i sin egen blokke af hukommelse, og den overordnede struktur opnås ved at forbinde disse elementer som links i en kæde. Hvert element i en tilknyttet liste har to felter som vist i figur 3. Datafeltet indeholder de faktiske data gemt, og det næste felt indeholder referencen til det næste element i kæden. Det første element i den linkede liste gemmes som hovedet på den linkede liste.

data næste

Figur 3: Element af en sammenknyttet liste

Figur 4 viser en tilknyttet liste med tre elementer. Hvert element gemmer sine data, og alle elementer undtagen den sidste gemmer en henvisning til det næste element. Sidste element har en nullværdi i det næste felt. Ethvert element i listen kan nås ved at starte ved hovedet og følge den næste peger, indtil du opfylder det ønskede element.

Selv om arrays og tilknyttede lister er ens i den forstand, at de begge bruges til at gemme samling af elementer, påføres de forskelle på grund af de strategier, de bruger til at allokere hukommelse til dets elementer. Arrays allokerer hukommelse til alle dens elementer som en enkelt blok, og størrelsen af ​​arrayet skal bestemmes i løbetid. Dette ville gøre arrayerne ineffektive i situationer, hvor du ikke kender størrelsen på arrayet på kompileringstidspunktet. Da en tilknyttet liste allokerer hukommelse til dets elementer separat, ville det være meget effektivt i situationer, hvor du ikke kender størrelsen af ​​listen på kompileringstidspunktet.Erklæring og adgang til elementer i en linket liste vil ikke være ligefrem i forhold til, hvordan du direkte får adgang til elementer i en matrix ved hjælp af dens indekser.