Eksempel på eksamens powerpoint til 3 semesters Programmerings eksamen på Datamatiker Uddannelsen på UCN i Aalborg. Fra 2010, emne nr 4: Datastrukturer og Collections
5. Dynamisk vs. statisk datastruktur
• Array
– Fordele:
• Direkte afgang til et
elemet vha index - O(1)
– Ulemper:
• Pladsspild
• Ændringer
koster dyrt
– Anvendes til:
• Data der ændres
sjældent men tit
anvender index
• Linked List
– Fordele:
• Ingen plads spild
• Dynamisk
udvidelse/mindskning
– Ulemper:
• Ingen index adgang –
søgning hver gang
– Anvendes til:
• Data med mange
ændringer
6. Datatyper
• Simple datatyper
– Build-in datatyper: int, char, bool ect. …
– Bruger-definerede datatyper: class, interface , struct
– To typer:
• Valuetype: int, char, bool, struct…
• Referencetype: string, object, class, Interface
• Abstrakte datatyper
– en samling data og en mængde operationer til at
manipulere dataen
– Indkapsling af datastruktur
– Kan anvendes uden at kende implementeringen
Datastrukturer - konstruktion i programmeringssproget som lagre en samling data
En datastruktur er en systematisk måde at organisere en datamængde i memory (eller på disk):
Array – statisk
Kædet (linked) liste – dynamisk –
Træer – oftest dynamisk – ikke i c#
Hashtabeller - ikke i c#
(Til en datastruktur hører der algoritmer, som udfører indsættelser, sletninger, søgninger, gennemløb (traverseringer) mv. )
Nederst: Give illusion af at være dynamisk, men hele listen flyttes.
Array-baseret liste:
FAST mængde memory allokeres.
fast (statisk) størrelse (pladsspild), udvider ved at flytte det hele til dobbelt så stor array
Kan evt. vokse og aftage i størrelse (ArrayList), men dette er meget dyrt i køretid (O(n))
Giver direkte access til elementer på index (O(1))
Kædet liste:
Optager kun den nødvendige plads (vokser og aftager efter behov).
Overhead til referencer (plads) og memory-management (tid)
Kun sekventiel access: access på index kræver søgning (dyrt: O(n))
Hver knude indeholder en værdi (evt. en objektreference) og en reference (pointer) til næste element (next):
Selve listen repræsenteres af en reference til første element, kaldes ofte head
Sidste elements next-reference er som regel null
Kædede lister er dynamiske: deres størrelse vokser of aftager efter behov.
Interface – value OG reference type, alt efter om det er en value eller reference type der implementere det. Står angivet som reference af MS
En datatype er defineret ved:
En mængde af værdier (hvilke værdier kan antages?)
En datarepræsentation (hvordan lagres værdierne?)
Operationer (hvilke operationer kan udføres på typen?)
Abstrakt Datatype – en samling data og en mængde operationer til at manipulere data’en
Fx sorted array og binary search algoritme
Carrano175
En ADT er ofte en indkapsling af en datastruktur med tilhørende algoritmer til manipulation af datastrukturen.
Bør som udgangspunkt kun indeholde få nødvendige metoder
Implementere interfaces:
ICollection
IEnumerable
IList
ICompareable ect ect
ArrayList - dynamisk array af objekter
Stack – LIFO last in first out, push – pop
Queue – FIFO first in first out, alm kø
.NET Framework does not include any built-in binary search tree data structures
Reference baseret implementation
Indsæt/slet/ søg :
O(log n) / O(n)
Best / worst case