Gå til innhold

Anbefalte innlegg

nei.

å?

 

Mulig det er ulikt i ulike språk, men vi lærte hvertfall på skolen (bruker java) at array har en fast størrelse. Hvis man ønsker egenskapene til array i tillegg til at den kan utvides bruker man en såkalt arraylist, en liste som simulerer en array, dvs at man får tilgang til elementet på en gitt index via get- og set-metoder.

Lenke til kommentar
Videoannonse
Annonse
Det finnes dynamiske og statiske arrayer, en liste skiller seg grunnleggende fra et array. Det har heller ingenting med ulike språk å gjøre, Sedgewicks bøker om algoritmer/datastrukturer f.eks finnes for flere forskjellige språk.

Mulig at dette er litt offtopic men...

 

Jeg vet den grunnleggende forskjellen på en liste og en aray. Visste ikke at det finnes både dynamiske og statiske array generelt, så der lærte jeg noe nytt (takk!), men i følge min bok* finnes ikke dynamiske array som en primær datatype i java. Utvidelse gjøres vet å lage en ny array og kopiere over fra den gamle.

 

 

*

"Data Structures & Problem Solving Using Java", av Mark Allen Weiss

Lenke til kommentar
Ved en dynamisk en så kan man legge til hele tiden. Man opretter et nytt objekt, T og setter v.next(av type T) til å peke på dette objektet.

Det er nettopp dette jeg (som jeg har lest i boken nevnt tidligere i tråden) kaller "linked list", og ikke "array". Tydeligvis ulike måter å bruke ordene på. Med array mener jeg en datastruktur der man adresserer elementene med en index direkte, og ikke traverserer den ved hjelp av pekere mellom objektene.

Lenke til kommentar
Det er nettopp dette jeg (som jeg har lest i boken nevnt tidligere i tråden) kaller "linked list", og ikke "array". Tydeligvis ulike måter å bruke ordene på. Med array mener jeg en datastruktur der man adresserer elementene med en index direkte, og ikke traverserer den ved hjelp av pekere mellom objektene
det er helt riktig det, men en array er nødvendigvis en liste med data i rekkefølge, enten den er statisk eller dynamisk, spiller ingen rolle.

Hvis du har en array med objekter, blir det en liste, tabell, array med pekere.

Lenke til kommentar
litt OT, men en string kan mer eller mindre tolkes som et dynamisk array. hvert tegn kan adresseres ved index og lengden kan økes runtime.

 

i java fungerer vel vector som et dynamisk array...om jeg husker riktig

I java er teknisk sett hverken strenger eller arrays dynamiske... Størrelsen kan ikke endres i det hele tatt. StringBuffer, derimot er dynamisk.

 

Hvis jeg ikke husker helt feil, så fungerer Vector klassen slik at den inneholder et statisk array. Når det statiske arrayet blir fullt opprettes et nytt og større array, og innholdet i det gamle kopieres over.

Lenke til kommentar
Hvis jeg ikke husker helt feil, så fungerer Vector klassen slik at den inneholder et statisk array. Når det statiske arrayet blir fullt opprettes et nytt og større array, og innholdet i det gamle kopieres over.
med andre ord et dynamisk array. Det er akkurat det samme som gjøres i realloc i C

 

Prøv å gjøre arrayet større, kan ikke dette gjøres, alloker en ny blokk,

og evt. kopier gamle data over i det nye, og frigjør den gamle pekeren.

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...