Datastruktur

Den aktuelle version af siden er endnu ikke blevet gennemgået af erfarne bidragydere og kan afvige væsentligt fra den version , der blev gennemgået den 14. februar 2020; checks kræver 6 redigeringer .

En datastruktur er en  softwareenhed, der giver dig mulighed for at lagre og behandle den samme type og/eller logisk relaterede data . Til tilføjelse, søgning, ændring og sletning af data giver datastrukturen et bestemt sæt funktioner, der udgør dens grænseflade.

Udtrykket "datastruktur" kan have flere tætte, men ikke desto mindre forskellige betydninger [1] :

Datastrukturer dannes ved hjælp af datatyper , referencer og operationer på dem i det valgte programmeringssprog .

Forskellige slags datastrukturer passer til forskellige applikationer; nogle af dem har en snæver specialisering til bestemte opgaver. For eksempel er B-træer normalt velegnede til at oprette databaser , mens hashtabeller bruges allestedsnærværende til at oprette forskellige slags ordbøger, for eksempel til at kortlægge domænenavne til computerens internetadresser .

I softwareudvikling afhænger kompleksiteten af ​​implementeringen og kvaliteten af ​​programmernes arbejde væsentligt af det korrekte valg af datastrukturer. Denne forståelse gav anledning til formelle udviklingsmetoder og programmeringssprog, der satte datastrukturer, ikke algoritmer, på forkant med softwarearkitekturen. De fleste af disse sprog har en form for modularitet , der gør det muligt at genbruge datastrukturer sikkert i forskellige applikationer. Objektorienterede sprog som Java , C# og C++ er eksempler på denne tilgang.

Mange klassiske datastrukturer findes i standardbibliotekerne for programmeringssprog eller direkte indbygget i programmeringssprog. For eksempel er hash-tabeldatastrukturen indbygget i programmeringssprogene Lua , Perl , Python , Ruby , Tcl m.fl. C++ standard skabelonbiblioteket (STL) er meget brugt.

De grundlæggende byggesten for de fleste datastrukturer er arrays , poster ( structi C og Pascal ), diskriminerede fagforeninger ( recordi C) og referencer . For eksempel kan en dobbelt linket liste bygges ved hjælp af indgange og links, hvor hver indgang (node) vil gemme data og links til "venstre" og "højre" noder. union

Sammenligning af datastrukturer i funktionel og imperativ programmering

At designe datastrukturer til funktionelle sprog er vanskeligere end for imperative sprog af mindst to grunde [1] :

  1. Næsten alle datastrukturer gør stor brug af opgave , som ikke bruges i en rent funktionel stil;
  2. Funktionelle datastrukturer er mere fleksible, og derfor, hvor den gamle version i imperativ programmering går tabt ved blot at blive erstattet af en ny, fortsætter den i funktionel programmering automatisk med at eksistere. Med andre ord, i imperativ programmering (hvis du ikke tager særlige forholdsregler, der kan komplicere programmet alvorligt), er datastrukturer flygtige ( engelsk  ephemeral ), og i funktionelle programmer er de normalt konstante ( engelsk  persistent ).

Noter

  1. 12 Okasaki , 1998 , s. 3-4.

Litteratur

Links