Vanlige datastrukturer. I dette lysarksettet

Størrelse: px
Begynne med side:

Download "Vanlige datastrukturer. I dette lysarksettet"

Transkript

1 Vanlige datastrukturer I dette lysarksettet datastrukturer Datastrukturer i Med datastruktur mener vi måten objektene i et program er strukturert på. Særlig blir det aktuelt å snakke om struktur hvis vi har mye data eller mange objekter å holde orden på. Orden er et annet ord for struktur. Vi kunne også si dataorden eller orden i dataene. nettverk eller grafer vha pekere Hittil har vi holdt orden på objektene ved lister enkeltvariable (eks. double mintemp, maxtemp) operasjoner på lister binære trær operasjoner på binære trær arrayer (eks. String[][] tabell) assosiative arrayer (eks. HashMap register) filer Dette er et sett lysark for en forelesning. Mange sider er ukommentert og ufullstendige. Mange spørsmål er ubesvarte og det kan forekomme feil. Settet er tildels uegnet til selvstudium uten notater fra forelesningen. For at algorimene (programmene) vi skriver skal bli forståelige og riktige, er det vesentlig at vi har orden i dataene, dvs. en god og hensiktsmessig datastruktur. Algoritmer og datastrukturer henger så nøye sammen at det gis som eget emne, se INF1020. Stein Michael Storleer 6. mars 2007 Ark 1 av 34 Stein Michael Storleer 6. mars 2007 Ark 2 av 34 Nå skal vi se på en måteå ordne (strukturere) data på, som benytter seg av at objekter kan referere (peke på) andre objekter ved hjelp av pekervariable. Slik kan vi lage et nettverk eller en vev av objektene vi skal holde orden på. Dette kan gjøres på alle tenkelige og utenkelige måter. En slik vev eller nettverk kalles i matematikken og databehandlingen gjerne for en graf. Teori om nettverk og grafer kalles grafteori. For andre illustrasjoner av grafer eller nettverk, se Lister På norsk bruker vi vanligvis ordet «liste» for en oppramsing (gjerne vertikal) på et stykke papir e.l., jf. kandidatliste, handleliste, spillerliste, sensurliste, deltakerliste, gjesteliste, sjekkliste, ordliste,... Vi skal i se på de to vanligste datastrukturene, nemlig lister og (binære) trær. Binært tre i Kenya, se Tegning av binært tre i databehandling, se Innen databehandling er lister den vanligst forekommende datastruktur. Alle sekvensielle data kan kalles en liste. F.eks. kan en fil ses på som en liste av tekststrenger (linjer). En tekststreng er igjen en liste av tegn. Vi har allerede programmert med lister i. Her skal vi se nærmere på forskjellige måter å implementere lister på, samt forskjellige metoder til å håndtere listen på. Stein Michael Storleer 6. mars 2007 Ark 3 av 34 Stein Michael Storleer 6. mars 2007 Ark 4 av 34

2 En datastruktur kalles liste, hvis objektene, når vi tegner et objektdiagram danner en kjede. Vanligste (eneste) datastruktur Mange implementasjonsmåter (objektkjeder, array...) enkel eller dobbeltkjedet liste Listeelementer og listeoperasjoner Datastruktur En liste er en (usortert) sekvens eller kjede av elementer i sier vi helst objekter av hva som helst. Hvert objekt i kjeden er «forbundet med» to naboobjekter, forrige objekt og neste objekt. Objektene kan for eksempel være navn, personer, biler, tegn, tall, tekststrenger,.... Objektene i en liste er ofte av samme type (instanser av samme klasse), men ikke alltid. Operasjoner på listen definerer forskjellige typer køer (LIFO, FIFO,...) Pekerkjede (lenket liste) førsteperson Sammenligning med array Per Liv Ola Algoritmer Typiske listeoperasjoner er å Legge til et element Søke etter et element Fjerne et element Skrive ut alle elementene Stein Michael Storleer 6. mars 2007 Ark 5 av 34 Stein Michael Storleer 6. mars 2007 Ark 6 av 34 Pekerkjede implementasjon En liste kan implementeres som en pekerkjede, der hvert element i listen har en peker til det neste elementet i listen. Liste av personer class Person { String navn; Person nesteperson; // Neste person i listen I selve personregisteret er det tilstrekkelig å ha en peker til den første personen i listen: class PersonRegister { Person førsteperson; // Første person i listen Stein Michael Storleer 6. mars 2007 Ark 7 av 34 Stein Michael Storleer 6. mars 2007 Ark 8 av 34

3 Rekursiv løsning, kalles med rekskriv(førsteperson); Skrive ut alle personene i lista: void skrivalle() { while (p!= null) { p.skriv(); p = p.nesteperson; void rekskriv(person p) { if (p!= null) { p.skriv(); p = p.nesteperson; rekskriv(p); Denne metoden kan vi også bruke for å skrive ut alle personene fra og med et personobjekt som vi har en peker til, ikke nødvendigvis alle. Hvis det er andre operasjoner (enn å skrive ut) inne i personobjektene, kan vi bytte ut denne med p.skriv() for å få gjort det for alle personer. Stein Michael Storleer 6. mars 2007 Ark 9 av 34 Stein Michael Storleer 6. mars 2007 Ark 10 av 34 Innsetting av ny person først i lista: Fjerning av den første personen i listen: førsteperson Ida void settførst(person p) { p.nesteperson = førsteperson; førsteperson = p; Hva skjer her hvis førsteperson er null? Kan vi lage en rekusiv versjon av denne? Per Liv Ola førsteperson Person fjernførste() { if (førsteperson == null) { return null; else { førsteperson = p.nesteperson; return p; Per Liv Ola Stein Michael Storleer 6. mars 2007 Ark 11 av 34 Stein Michael Storleer 6. mars 2007 Ark 12 av 34

4 Fjerne person med gitt navn: Antall objekter i lista? Lag en metode antall som finner (og returnerer) antall personer i registeret. Rekursiv løsning: Person fjern(string navn) { Person forrige = null; while (p!= null &&! p.navn.equals(navn)) { forrige = p; p = p.nesteperson; int tellopp (Person p) { int antall; if (p == null) antall = 0; else antall = 1 + tellopp(p.neste); return antall; Kommentar: Hvis vi spør etter antall ofte, vil det heller lønne seg å ha en teller som oppdateres ved innsetting og fjerning. // p er personen som skal fjernes, // forrige er personen FØR denne i listen if (p!= null) { if (p == førsteperson) { // Spesialtilfelle: // personen som skal fjernes står først førsteperson = førsteperson.nesteperson; else { forrige.nesteperson = p.nesteperson; return p; Stein Michael Storleer 6. mars 2007 Ark 13 av 34 Stein Michael Storleer 6. mars 2007 Ark 14 av 34 Eksempel: fjern(liv) Sette inn ny person sist førsteperson Per Den siste metoden ble relativt lang. Hva om vi først lager en metode som returnerer en peker til objektet vi skal fjerne, for så å lage en metode som tar et objekt som parameter og fjerner det? Altså noe à la: p = finn(liv); tabort(p); Liv Kan det være bedre enn å ha én metode? Ola førsteperson Per void settsist(person pers) { if (førsteperson == null) { førsteperson = pers; else { while (p.nesteperson!= null) { p = p.nesteperson; // p er nå siste person i listen p.nesteperson = pers; Liv Ola Ida Stein Michael Storleer 6. mars 2007 Ark 15 av 34 Stein Michael Storleer 6. mars 2007 Ark 16 av 34

5 Finne person med gitt navn Person finn(string navn) { while (p!= null &&!p.navn.equals(navn)) { p = p.nesteperson; return p; Kan vi lage en rekursiv variant av denne? Sett at vi skal bruke registeret til å romme folkeregisteret i Norge (ca personer). Er denne metoden for å finne en person hensiktsmessig? Sortert liste Med en sortert liste, menes en liste som er sortert på et attributt i objektene, i personregistereksemplet er en alfabetisk sortering på navnet et eksempel på sortering. Det betyr at objektene ligger sortert på navn i lista, på samme måten som navnene i telefonkatalogen. Eks. Bjarne kommer før Sigrid i lista (treffes på før når vi starter med førsteperson og følger nestepekerne). Sortering er en ekstra orden eller struktur vi kan velge å legge på lista. Det gjør at enkelte operasjoner (algoritmer) blir enklere å lage å forstå, mens andre blir vanskeligere. Dette er et eksempel på hvor nært forhold det er mellom datastruktur og algoritmene som skal virke på den. Sortert liste gjør leting etter objekter lettere (hvorfor?), mens innsetting ikke lenger kan gjøres først eller sist i lista. Stein Michael Storleer 6. mars 2007 Ark 17 av 34 Stein Michael Storleer 6. mars 2007 Ark 18 av 34 Innsetting som holder lista sortert Metode som skal ligge i PersonRegister og som forutsetter at lista er sortert eller tom. (Dette er oppfylt hvis det ikke er andre steder i programmet som setter inn objekter i lista). Hva må vi passe på? I hvertfall at algoritmen er korrekt for følgende tilfeller, når førsteperson == null innobjektet skal inn først innobjektet skal inn sist void settinnsortert(person inn) { Boolean ikkefunnet = true; inn.neste = null; while (p!= null && ikkefunnet ) if (p.neste.navn.compareto(inn.navn) <= 0) p = p.neste; else ikkefunnet = false; if (p!= null) { // Spesialtilfelle: lista var tom førsteperson = inn; else { // inn skal inn etter p før p.neste inn.neste = p.neste; p = inn; innobjektet skal hverken først eller sist Hvilket tilfelle (av de 4 over) vil feile her? Stein Michael Storleer 6. mars 2007 Ark 19 av 34 Stein Michael Storleer 6. mars 2007 Ark 20 av 34

6 Tilfellet hvor innobjektet skal inn først i en fra før ikke tom liste vil feile. Hva skjer? Vi skriver om: void settinnsortert(person inn) { Boolean ikkefunnet = true; inn.neste = null; while (p!= null && ikkefunnet ) if (p.neste.navn.comparetoignorecase(inn.navn) <= 0) p = p.neste; else ikkefunnet = false; //p == null eller p.neste.navn > inn.navn if (p!= null) { //lista var tom førsteperson = inn; else if (p == førsteperson) { inn.neste = p.neste; førsteperson = inn; else { // inn skal inn etter p før p.neste inn.neste = p.neste; p = inn; void settinnsortert(person inn) { Boolean ikkefunnet = true; inn.neste = null; while (p!= null && p.neste!= null && ikkefunnet ) if (p.neste.navn.comparetoignorecase(inn.navn) <= 0) p = p.neste; else ikkefunnet = false; //p == null eller p.neste == null eller p.neste.navn > inn.navn if (p == null) { //lista var tom førsteperson = inn; else if (p == førsteperson) { //lista ikke tom, inn skal først inn.neste = p.neste; førsteperson = inn; else { // p.neste == null eller p.neste.navn > inn.navn // inn skal inn etter p før p.neste inn.neste = p.neste; p.neste = inn; Stein Michael Storleer 6. mars 2007 Ark 21 av 34 Stein Michael Storleer 6. mars 2007 Ark 22 av 34 Hva skjer hvis inn.navn.equalsignorecase(p.neste.navn), med andre ord hvis det finnes en person med samme navn som den personen vi vil sette inn? Hvis vi er sikre på at innobjektet ikke skal inn først i lista, blir metoden mye kortere. Hva trenger vi ikke sjekke da? Binært søketre Vi skriver om class Person slik at den nå har to personpekere: Trær av personer class Person { String navn; Person foran, // Peker til personer alfabetisk før denne etter; // Peker til personer alfabetisk etter denne Ved først å sette inn et personobjekt med navn= AAAAAAAAAAAA e.l. sikrer vi dette. Et slikt objekt som ikke svarer til en virkelig person, kalles ofte listehode. Det er i datastrukturen for å lette programmeringen. Selv med en sortert liste må vi i snitt søke lenge (hvor lenge hvis det er 5 millioner personer?) før vi finner en person med et gitt navn. Da er binære trær en atskillig bedre datastruktur. type: String navn: navn type: Person navn: foran "Sokrates" type: Person navn: etter Sokrates Forenklet objekt Et objekt av klassen Person Stein Michael Storleer 6. mars 2007 Ark 23 av 34 Stein Michael Storleer 6. mars 2007 Ark 24 av 34

7 Ideen er nå å sette inn objektene slik at alle personene som vi finner ved å følge etter pekeren er alfabetisk større enn dette objektets navn. Tilsvarende skal alle personobjekter vi kan finne ved å følge foran pekeren være alfabetisk mindre enn dette objektets navn. Jasmina Når vi skal legge til et personobjekt, sjekker vi først navnet til førsteperson. Her har vi fire muligheter: Imran Nikita ❶førstePerson == null, objektet med innavnet er første objekt. ❷ innnavnet er likt, ingenting legges til (i dette eksemplet) Objekter som har navn som kommer alfabetisk foran (mindre enn) "Imran" Objekter hvor navn er større enn "Nikita" ❸ innavnet er større og personen skal legges til (treet) etter ❹ innavnet er mindre og personen skal legges til (treet) foran Sette inn en person i treet Metoden vi bruker for å legge til et objekt har to personpekere som parametre. Første parameter er en peker til treet vi skal sette objektet (andreparameteren peker på) inn i. Metoden kalles med kallet settinnitre(førsteperson, nyperson); Stein Michael Storleer 6. mars 2007 Ark 25 av 34 Stein Michael Storleer 6. mars 2007 Ark 26 av 34 Vi lager en første skisse i kvasikode : Andreas Christian Darjan Eirik Elisabeth Gry Gunnar Helge Henrik Imran Jan Jim Jørgen Nguyen Nikita Philip Pål Simen Siv Stian Susanne Tor Torjus Vivi Fra sortert liste (øverst) til binært søketre Jørgen void settinnitre(person tre, Person inn) { if (tre == null) { tre = inn; else if ( innpersonens navn er større enn denne personens navn ) //da er inn.navn alfabetisk etter tre.navn <sett inn innpersonen i treet pekt på av etter> else if ( innpersonens navn er mindre enn denne personens navn ) //da er inn.navn alfabetisk foran tre.navn <sett inn innpersonen i treet pekt på av foran> else if ( innpersonens navn er lik denne personens navn ) //da er inn.navn lik tre.navn <vi skal ikke sette inn noen person> Eirik Christian Andreas Darjan Elisabeth Gry Gunnar Henrik Helge Jan Imran Jim Nikita Nguyen Philip Pål Siv Simen Stian Susanne Torjus Tor Vivi Vi har allerede skrevet ut koden, slik at metoden er korrekt hvis treet er tomt. Hvis treet ikke er tomt (tre!= null), har vi tilgang til de to (muligens tomme) trærne tre.foran og tre.etter. Det er i en av disse vi skal sette inn innpersonen hvis vi ser bort fra tilfellet der innavnet er lik navnet i objektet pekt på av tre. Siden metoden settinnitre kan sette en ny person inn i et tre pekt på av tre, kan vi (rekursivt) bruke metoden vi lager: Stein Michael Storleer 6. mars 2007 Ark 27 av 34 Stein Michael Storleer 6. mars 2007 Ark 28 av 34

8 void settinnitre(person tre, Person inn) { if (tre == null) { tre = inn; else if ( innpersonens navn er større enn denne personens navn ) //da er inn.navn alfabetisk etter tre.navn settinnitre(tre.etter, inn); else if ( innpersonens navn er mindre enn denne personens navn ) //da er inn.navn alfabetisk foran tre.navn settinnitre(tre.foran, inn); else <vi skal ikke sette inn noen person> Hva med rekursjonskriteriene? basis er tre == null det rekursive kallet er nærmere basis fordi tre.etter (eller tre.foran) er nærmere bladene. Aldri to rekursive kall i en metodeinstans Da kan vi programmere ut. Siste elsegren kan vi kutte ut fordi vi i det tilfellet (navnelikhet) ikke skal sette inn noe. Hvordan vi sammenligner tekststrenger er ikke vesentlig her, men i ekemplet har jeg brukt comparetoignorecase (fra String klassen) som returnerer et heltall. void settinnitre(person tre, Person inn) { if (tre == null) tre = inn; else { int smnlgn = tre.navn.comparetoignorecase(inn.navn); if ( smnlgn < 0 ) settinnitre(tre.etter, inn); else if ( smnlgn > 0 ) settinnitre(tre.foran, inn); Det er bare en hake ved dette. Det virker ikke. Når tre = inn forandrer ikke det verdien til den aktuelle parameteren. Dette skyldes parameteroverføringen i Java. Resultatet er at vi ikke får endret på pekerverdiene i datastrukturen. Men hadde Java virket slik at verdien til en aktuell parameter hadde blitt endret, hadde denne algoritmen vært den enkleste, også siden det tar med tilfellet der treet til å begynne med er tomt, tre == null. Stein Michael Storleer 6. mars 2007 Ark 29 av 34 Stein Michael Storleer 6. mars 2007 Ark 30 av 34 Henrik Andreas Gunnar Elisabeth Christian Gry Darjan Eirik Helge Henrik Jørgen Andreas Susanne Gunnar Nikita Jim Vivi Pål Elisabeth Christian Jørgen Darjan Eirik Jan Torjus Tor Gry Simen Stian Imran Nguyen Helge Philip Siv Imran Jan Jim Jørgen Nikita Nguyen Pål Philip Susanne Vivi Torjus Tor Simen Stian Vi antar at treet (egentlig personen i roten av treet) eksisterer, dvs. ikke er null: Person treet = new Person; treet.navn = Katrine ; Vi kan da legge til grunn at tre!= null når vi setter inn en ny person, nyperson, ved kallet settinnitre(treet, nyperson): void settinnitre(person tre, Person inn) { int smnlgn = tre.navn.comparetoignorecase(inn.navn); if ( smnlgn < 0 ) { if (tre.etter == null) tre.etter = inn; else settinnitre(tre.etter, inn); else if ( smnlgn > 0 ) { if (tre.foran == null) tre.foran = inn; else settinnitre(tre.foran, inn); else {; Slik blir treet hvis navnene kommer slik lista over er (fra øverst og nedover) Siv Stein Michael Storleer 6. mars 2007 Ark 31 av 34 Stein Michael Storleer 6. mars 2007 Ark 32 av 34

9 Andreas Christian Darjan Finne en person med et gitt navn blir nokså likt det å sette inn en person. Metoden skal returnere med en peker til et personobjekt i treet som har likt navn med innparameteren. Hvis dette objektet ikke finnes, skal metoden returnere null. Treet vi skal lete i må også være innparameter. Når vi skal lete i hele treet, bruker vi kallet finnitre(førsteperson, navnet). Slik blir treet hvis person objektene settes inn i alfabetisk rekkefølge. Eirik Elisabeth Gry Gunnar Helge Henrik Resten i stigende orden Person finnitre(person tre, String navn) { Person funnetperson = null; if (tre!= null) { int smnlgn = tre.navn.comparetoignorecase(navn); if ( smnlgn < 0 ) funnetperson = finnitre(tre.etter, navn); else if ( smnlgn > 0 ) funnetperson = finnitre(tre.foran, navn); return funnetperson; basis er tre == null, ingen rekursjon det rekursive kallet er nærmere basis fordi tre.etter (eller tre.foran) er nærmere bladene. Aldri to rekursive kall i en metodeinstans Stein Michael Storleer 6. mars 2007 Ark 33 av 34 Stein Michael Storleer 6. mars 2007 Ark 34 av 34

10

INF1010. Om pensum INF1010 INF1010 INF1010 INF1010. Det vesentlige er å forstå og kunne lage programmer ved hjelp av eksemplene i bøkene.

INF1010. Om pensum INF1010 INF1010 INF1010 INF1010. Det vesentlige er å forstå og kunne lage programmer ved hjelp av eksemplene i bøkene. Om pensum Dagens forelesning handler om (de to datastrukturene) lister og binære trær. Etter forelesningen skal studentene kjenne til datastrukturene lister og binære trær og kunne lage programmer som

Detaljer

INF1010 LISTER. Listeelementer og listeoperasjoner. Foran. Bak

INF1010 LISTER. Listeelementer og listeoperasjoner. Foran. Bak LISTER Vanligste datastruktur Mange implementasjonsmåter (objektkjeder, array...) Operasjoner på listen definerer forskjellige typer lister (LIFO, FIFO,...) På norsk bruker vi vanligvis ordet «liste» for

Detaljer

Hvorfor sortering og søking? Søking og sortering. Binære søketrær. Ordnet innsetting forbereder for mer effektiv søking og sortering INF1010 INF1010

Hvorfor sortering og søking? Søking og sortering. Binære søketrær. Ordnet innsetting forbereder for mer effektiv søking og sortering INF1010 INF1010 Hvorfor sortering og søking? Man bør ha orden i dataene umulig å leve uten i informasjonssamfunnet vi blir fort lei av å lete poleksempel internett alt er søking og sortering alternativer til sortering

Detaljer

Dagens forelesning. INF1010 Datastrukturer Lister og køer Pekerkjedelister Øvelser. Innhold i dette lysarksettet

Dagens forelesning. INF1010 Datastrukturer Lister og køer Pekerkjedelister Øvelser. Innhold i dette lysarksettet Innhold i dette lysarksettet Dagens forelesning INF1010 Innhold i dette lysarksettet Hvordan jobbe med INF1010 Datastrukturer Algoritmer og datastrukturer Grafer (lister og trær) Objektorientert programmering

Detaljer

INF1010 e-postadresser

INF1010 e-postadresser INF1010 e-postadresser Ikke-faglige spørsmål til studieinfo@ifi.uio.no. Faglige spørsmål til blogen eller til @ifi.uio.no: brukernavn kristoeb josek stianf bendiko bmmender espeak richar daghf

Detaljer

Studieaktiviteter i INF1010

Studieaktiviteter i INF1010 Innhold i dette lysarksettet Dagens forelesning INF1010 Innhold i dette lysarksettet Hvordan jobbe med INF1010 Datastrukturer Algoritmer og datastrukturer Grafer (lister og trær) Objektorientert programmering

Detaljer

Lenkelister. Lister og køer.

Lenkelister. Lister og køer. Lenkelister. Lister og køer. INF1010 Stein Michael Storleer 27. januar 2011 Dagens forelesning Lenkede lister Lenkede lister Eksempel på en lenket liste: personliste Operasjoner på lenkede lister (enkeltlenket)

Detaljer

Velkommen til INF1010

Velkommen til INF1010 Velkommen til INF1010 Dagens forelesning Hvordan jobbe med INF1010 Pensum Datastrukturer Grafer (lister og trær) Objektorientert programmering Lister og køer Hva er en liste? FIFO- og LIFO-lister Lenkede

Detaljer

Operasjoner på lenkede lister (enkeltlenket) Eksempel på en lenket liste: personliste. INF januar 2010 (uke 3) 2

Operasjoner på lenkede lister (enkeltlenket) Eksempel på en lenket liste: personliste. INF januar 2010 (uke 3) 2 Velkommen til INF1010 Studieaktiviteter i INF1010 Programmering (oppgaveløsning) alene/kollokvier programmeringslab (plenums)øvelser forelesninger gruppe som repeterer stoff fra forelesning, og øvelser

Detaljer

alternativer til sortering og søking binære trær søketrær Ikke-rekursiv algoritme som løser Hanois tårn med n plater

alternativer til sortering og søking binære trær søketrær Ikke-rekursiv algoritme som løser Hanois tårn med n plater Dagens temaer Sortering: 4 metoder Hvorfor sortering (og søking) er viktig i programmering Sortering når objektene som skal sorteres er i et array 1. Sorterering ved bruk av binærtre som «mellomlager»

Detaljer

Versjon (vil bli endret).

Versjon (vil bli endret). Versjon 24.01.2012 (vil bli endret). Dette dokumentet bør leses før forelesningen 26. januar 2012 og er en del av «pensum». De er også laget med tanke på repetisjon. (Lysarkene som blir brukt egner seg

Detaljer

Dagens temaer. Sortering: 4 metoder Søking: binærsøk Rekursjon: Hanois tårn

Dagens temaer. Sortering: 4 metoder Søking: binærsøk Rekursjon: Hanois tårn Dagens temaer Sortering: 4 metoder Hvorfor sortering (og søking) er viktig i programmering Sortering når objektene som skal sorteres er i et array 1. Sorterering ved bruk av binærtre som «mellomlager»

Detaljer

Dagens tema INF1010 INF1010 INF1010 INF1010

Dagens tema INF1010 INF1010 INF1010 INF1010 I eksemplene om lister og binære trær har vi hittil hatt pekerne inne i objektene i strukturen. ( Innbakt struktur ).Eksempel: Dagens tema Implementasjon av strukturer (lister, binære trær) class { ; ;

Detaljer

En implementasjon av binærtre. Dagens tema. Klassestruktur hovedstruktur abstract class BTnode {}

En implementasjon av binærtre. Dagens tema. Klassestruktur hovedstruktur abstract class BTnode {} En implementasjon av binærtre Dagens tema Eksempel på binærtreimplementasjon Rekursjon: Tårnet i Hanoi Søking Lineær søking Klassestruktur hovedstruktur abstract class { class Person extends { class Binaertre

Detaljer

Finne et personobjekt med et gitt navn. Sette personobjekt inn i treet

Finne et personobjekt med et gitt navn. Sette personobjekt inn i treet INF1010 e-ostadresser Ikke-faglige sørsmål til studieinfo@ifi.uio.no. Faglige sørsmål til blogen eller til @ifi.uio.no: brukernavn navn kristoeb Kristoffer Egil Bonarjee josek Jose Louis Rojas

Detaljer

Binære søketrær. Et notat for INF1010 Stein Michael Storleer 16. mai 2013

Binære søketrær. Et notat for INF1010 Stein Michael Storleer 16. mai 2013 Binære søketrær Et notat for INF Stein Michael Storleer 6. mai 3 Dette notatet er nyskrevet og inneholder sikkert feil. Disse vil bli fortløpende rettet og datoen over blir oppdatert samtidig. Hvis du

Detaljer

Lenkelister. Lister og køer. Kopi av utvalgte sider fra forelesningen.

Lenkelister. Lister og køer. Kopi av utvalgte sider fra forelesningen. Lenkelister. Lister og køer. Kopi av utvalgte sider fra forelesningen. "Taher" type: String : type: :... type: : inf1010student null michael@ifi.uio.no INF1010 26. januar 2012 (uke 4) 2 class Eks01 { public

Detaljer

EKSAMEN. Dato: 9. mai 2016 Eksamenstid: 09:00 13:00

EKSAMEN. Dato: 9. mai 2016 Eksamenstid: 09:00 13:00 EKSAMEN Emnekode: ITF20006 Emne: Algoritmer og datastrukturer Dato: 9. mai 2016 Eksamenstid: 09:00 13:00 Hjelpemidler: Alle trykte og skrevne Faglærer: Jan Høiberg Om eksamensoppgavene: Oppgavesettet består

Detaljer

INF januar 2015 Stein Michael Storleer (michael) Lenkelister

INF januar 2015 Stein Michael Storleer (michael) Lenkelister INF1010 29. januar 2015 Stein Michael Storleer (michael) Lenkelister Lenke + lister = lenkelister Vi starter med lenkeobjektene Lager en kjede av objekter ved hjelp av pekere class { ; Legger Jl data innholdet

Detaljer

Oppgavesettet består av 7 sider, inkludert denne forsiden. Kontroll& at oppgaven er komplett før du begynner å besvare spørsmålene.

Oppgavesettet består av 7 sider, inkludert denne forsiden. Kontroll& at oppgaven er komplett før du begynner å besvare spørsmålene. Høgskoleni Østfold EKSAMEN Emnekode: Emnenavn: ITF20006 Algoritmer og datastrukturer Dato: Eksamenstid: 9. mai 2016 9.00 13.00 Hjelpemidler: Faglærer: Alle trykte og skrevne Jan Høiberg Om eksamensoppgaven

Detaljer

INF1010 siste begreper før oblig 2

INF1010 siste begreper før oblig 2 INF1010 siste begreper før oblig 2 Sammenligning. Mer lenkede lister. Forskjellige listeimplementasjoner. Binære trær. Bittelitt om grensesnitt (interface). Dagens forelesning Flere temaer på grunn av

Detaljer

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet Eksamen i INF1010 Objektorientert programmering Eksamensdag: 6. juni 2013 Tid for eksamen: 09.00 15.00 Oppgavesettet er på 5 sider. Vedlegg:

Detaljer

Rekursjon. Binærsøk. Hanois tårn.

Rekursjon. Binærsøk. Hanois tårn. Rekursjon Binærsøk. Hanois tårn. Hvorfor sortering (og søking) er viktig i programmering «orden» i dataene vi blir fort lei av å lete poleksempel internett «alt» er søking og sortering alternativer til

Detaljer

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet Eksamen i INF1010 Objektorientert programmering Dato: 9. juni 2016 Tid for eksamen: 09.00 15.00 (6 timer) Oppgavesettet er på 7 sider. Vedlegg:

Detaljer

INF1010 Rekursive metoder, binære søketrær. Algoritmer: Mer om rekursive kall mellom objekter Ny datastruktur: binært tre

INF1010 Rekursive metoder, binære søketrær. Algoritmer: Mer om rekursive kall mellom objekter Ny datastruktur: binært tre INF1010 Rekursive metoder, binære søketrær Algoritmer: Mer om rekursive kall mellom objekter Ny datastruktur: binært tre public void skrivutmeg ( ) { System. out. println (navn + " er venn med " + minbestevennheter

Detaljer

Definisjon av binært søketre

Definisjon av binært søketre Binære søketrær Definisjon av binært søketre For alle nodene i et binært søketre gjelder: Alle verdiene i nodens venstre subtre er mindre enn verdien i noden Alle verdiene i nodens høyre subtre er større

Detaljer

Eks 1: Binærtre Binærtretraversering Eks 2: Binærtre og stakk

Eks 1: Binærtre Binærtretraversering Eks 2: Binærtre og stakk Godkjent oblig 1? Les e-post til din UiO-adresse Svar på e-post fra lablærer Ingen godkjenning før avholdt møte med lablærer Godkjentlistene brukes ikke til å informere om status for obligene Ta vare på

Detaljer

Gjøre noe i hele treet = kalle på samme metode i alle objekten. Java datastruktur Klassestruktur

Gjøre noe i hele treet = kalle på samme metode i alle objekten. Java datastruktur Klassestruktur Godkjent oblig 1? Les e-post til din UiO-adresse Svar på e-post fra lablærer Ingen godkjenning før avholdt møte med lablærer Godkjentlistene brukes ikke til å informere om status for obligene Ta vare på

Detaljer

Ny/utsatt EKSAMEN. Dato: 6. januar 2017 Eksamenstid: 09:00 13:00

Ny/utsatt EKSAMEN. Dato: 6. januar 2017 Eksamenstid: 09:00 13:00 Ny/utsatt EKSAMEN Emnekode: ITF20006 Emne: Algoritmer og datastrukturer Dato: 6. januar 2017 Eksamenstid: 09:00 13:00 Hjelpemidler: Alle trykte og skrevne Faglærer: Jan Høiberg Om eksamensoppgavene: Oppgavesettet

Detaljer

Binære søketrær. En ordnet datastruktur med raske oppslag. Sigmund Hansen

Binære søketrær. En ordnet datastruktur med raske oppslag. Sigmund Hansen Binære søketrær En ordnet datastruktur med raske oppslag Sigmund Hansen Lister og trær Rekke (array): 1 2 3 4 Lenket liste (dobbelt-lenket): 1 2 3 4 Binært søketre: 3 1 4 2 Binære

Detaljer

INF1010 notat: Binærsøking og quicksort

INF1010 notat: Binærsøking og quicksort INF1010 notat: Binærsøking og quicksort Ragnhild Kobro Runde Februar 2004 I dette notatet skal vi ta for oss ytterligere to eksempler der rekursjon har en naturlig anvendelse, nemlig binærsøking og quicksort.

Detaljer

EKSAMEN. Dato: 28. mai 2018 Eksamenstid: 09:00 13:00

EKSAMEN. Dato: 28. mai 2018 Eksamenstid: 09:00 13:00 EKSAMEN Emnekode: ITF20006 Emne: Algoritmer og datastrukturer Dato: 28. mai 2018 Eksamenstid: 09:00 13:00 Hjelpemidler: Alle trykte og skrevne Faglærer: Jan Høiberg Om eksamensoppgavene: Oppgavesettet

Detaljer

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet Eksamen i IN 115 og IN 110 Algoritmer og datastrukturer Eksamensdag: 14. mai 1996 Tid for eksamen: 9.00 15.00 Oppgavesettet er på 8 sider.

Detaljer

Lenkelister, iteratorer, indre klasser. Repetisjonskurs våren 2018 kristijb

Lenkelister, iteratorer, indre klasser. Repetisjonskurs våren 2018 kristijb Lenkelister, iteratorer, indre klasser Repetisjonskurs våren 2018 kristijb Lenket liste av objekter Vi lager en lenke ved at objekter refererer til hverandre. Vanlige er ofte å ha Node-objekter som har

Detaljer

Fra Kap.10 Binære søketre (BS-tre) Sist oppdatert 20.03.10 Definere en abstrakt datastruktur binært søketre. Vise hvordan binær søketre kan brukes

Fra Kap.10 Binære søketre (BS-tre) Sist oppdatert 20.03.10 Definere en abstrakt datastruktur binært søketre. Vise hvordan binær søketre kan brukes Fra Kap.10 Binære søketre (BS-tre) Sist oppdatert 20.03.10 Definere en abstrakt datastruktur binært søketre. Vise hvordan binær søketre kan brukes til å løse problemer. Undersøke ulike implementasjoner

Detaljer

INF1010 Binære søketrær ++

INF1010 Binære søketrær ++ INF1010 Binære søketrær ++ Programeksempler med insetting, gjenfinning av noder i et binært søketre samt eksempler på hvordan lage en liste av et binærtre. Hva må du kunne om binære søketrær i INF1010

Detaljer

Algoritmer og Datastrukturer

Algoritmer og Datastrukturer Eksamen i Algoritmer og Datastrukturer IAI 21899 Høgskolen i Østfold Avdeling for informatikk og automatisering Lørdag 15. desember 2001, kl. 09.00-14.00 Hjelpemidler: Alle trykte og skrevne hjelpemidler.

Detaljer

Ny/utsatt EKSAMEN. Dato: 5. januar 2018 Eksamenstid: 09:00 13:00

Ny/utsatt EKSAMEN. Dato: 5. januar 2018 Eksamenstid: 09:00 13:00 Ny/utsatt EKSAMEN Emnekode: ITF20006 Emne: Algoritmer og datastrukturer Dato: 5. januar 2018 Eksamenstid: 09:00 13:00 Hjelpemidler: Alle trykte og skrevne Faglærer: Jan Høiberg Om eksamensoppgavene: Oppgavesettet

Detaljer

Løsnings forslag i java In115, Våren 1996

Løsnings forslag i java In115, Våren 1996 Løsnings forslag i java In115, Våren 1996 Oppgave 1a For å kunne kjøre Warshall-algoritmen, må man ha grafen på nabomatriseform, altså en boolsk matrise B, slik at B[i][j]=true hvis det går en kant fra

Detaljer

INF110 Algoritmer og datastrukturer TRÆR. Vi skal i denne forelesningen se litt på ulike typer trær:

INF110 Algoritmer og datastrukturer TRÆR. Vi skal i denne forelesningen se litt på ulike typer trær: TRÆR Vi skal i denne forelesningen se litt på ulike typer trær: Generelle trær (kap. 4.1) Binærtrær (kap. 4.2) Binære søketrær (kap. 4.3) Den siste typen trær vi skal behandle, B-trær (kap. 4.7) kommer

Detaljer

EKSAMEN. Dato: 18. mai 2017 Eksamenstid: 09:00 13:00

EKSAMEN. Dato: 18. mai 2017 Eksamenstid: 09:00 13:00 EKSAMEN Emnekode: ITF20006 Emne: Algoritmer og datastrukturer Dato: 18. mai 2017 Eksamenstid: 09:00 13:00 Hjelpemidler: Alle trykte og skrevne Kalkulator Faglærer: Jan Høiberg Om eksamensoppgavene: Oppgavesettet

Detaljer

Algoritmer og datastrukturer Eksamen

Algoritmer og datastrukturer Eksamen Eksamen - Algoritmer og datastrukturer - Høgskolen i Oslo og Akershus - 27.11.2012 Side 1 av 6 Algoritmer og datastrukturer Eksamen 27.11.2012 Eksamensoppgaver Råd og tips: Bruk ikke for lang tid på et

Detaljer

Definisjon: Et sortert tre

Definisjon: Et sortert tre Binære søketrær Definisjon: Et sortert tre For alle nodene i et binært søketre gjelder: Alle verdiene i nodens venstre subtre er mindre enn verdien i noden Alle verdiene i nodens høyre subtre er større

Detaljer

Algoritmer og Datastrukturer

Algoritmer og Datastrukturer Eksamen i Algoritmer og Datastrukturer IAI 20102 Høgskolen i Østfold Avdeling for informatikk og automatisering Lødag 5. juni 2004, kl. 09.00-13.00 LØSNINGSFORSLAG 1 Del 1 60% Oppgave 1.1-10% Forklar kort

Detaljer

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO UNIVERSITETET I OSLO BOKMÅL Det matematisk-naturvitenskapelige fakultet Eksamen i : Eksamensdag : Torsdag 2. desember 2004 Tid for eksamen : 09.00 12.00 Oppgavesettet er på : Vedlegg : Tillatte hjelpemidler

Detaljer

Oppgave 1. Sekvenser (20%)

Oppgave 1. Sekvenser (20%) Det matematisk-naturvitenskapelige fakultet UNIVERSITETET I BERGEN Eksamen i emnet I 20 - Algoritmer, datastrukturer og programmering Mandag 2.Mai 200, kl. 09-5. Ingen hjelpemidler tillatt. Oppgavesettet

Detaljer

Obligatorisk oppgave 1 INF1020 h2005

Obligatorisk oppgave 1 INF1020 h2005 Obligatorisk oppgave 1 INF1020 h2005 Frist: fredag 7. oktober Oppgaven skal løses individuelt, og må være godkjent for å kunne gå opp til eksamen. Før innlevering må retningslinjene Krav til innleverte

Detaljer

Oppgave 1 LØSNINGSFORSLAG. Eksamen i INF desember Betrakt følgende vektede, urettede graf:

Oppgave 1 LØSNINGSFORSLAG. Eksamen i INF desember Betrakt følgende vektede, urettede graf: INF100 Algoritmer og datastrukturer INF100 Algoritmer og datastrukturer Oppgave 1 LØSNINGSFORSLAG Betrakt følgende vektede, urettede graf: V 1 V Eksamen i INF100 1. desember 004 V V 4 V 4 V V Ragnar Normann

Detaljer

"behrozm" Oppsummering - programskisse for traversering av en graf (dybde først) Forelesning i INF februar 2009

behrozm Oppsummering - programskisse for traversering av en graf (dybde først) Forelesning i INF februar 2009 Rekursiv programmering BTeksempel Datastruktur I klassen Persontre (rotperson==) Rekursjon Noen oppgaver/problemer er rekursive «av natur» Eksempel på en rekursiv definisjon Fakultetsfunksjonen

Detaljer

Dagens tema. INF Algoritmer og datastrukturer. Binærtrær. Generelle trær

Dagens tema. INF Algoritmer og datastrukturer. Binærtrær. Generelle trær Dagens tema INF2220 - Algoritmer og datastrukturer HØSTEN 2007 Institutt for informatikk, Universitetet i Oslo INF2220, forelesning 2: Binærtrær og abstrakte datatyper (ADT) Kort repetisjon Generelle trær

Detaljer

INF2220: Forelesning 1. Praktisk informasjon Analyse av algoritmer (kapittel 2) (Binær)trær (kapittel )

INF2220: Forelesning 1. Praktisk informasjon Analyse av algoritmer (kapittel 2) (Binær)trær (kapittel ) INF2220: Forelesning 1 Praktisk informasjon Analyse av algoritmer (kapittel 2) (Binær)trær (kapittel 4.1-4.3 + 4.6) PRAKTISK INFORMASJON 2 Praktisk informasjon Kursansvarlige Ragnhild Kobro Runde (ragnhilk@ifi.uio.no)

Detaljer

EKSAMEN med løsningsforslag

EKSAMEN med løsningsforslag EKSAMEN med løsningsforslag Emnekode: ITF20006 Emne: Algoritmer og datastrukturer Dato: Eksamenstid: 20. mai 2009 kl 09.00 til kl 13.00 Hjelpemidler: 8 A4-sider (4 ark) med egne notater Kalkulator Faglærer:

Detaljer

... Når internminnet blir for lite. Dagens plan: Løsning: Utvidbar hashing. hash(x) katalog. O modellen er ikke lenger gyldig ved

... Når internminnet blir for lite. Dagens plan: Løsning: Utvidbar hashing. hash(x) katalog. O modellen er ikke lenger gyldig ved Dagens plan: Utvidbar hashing (kapittel 5.6) B-trær (kap. 4.7) Abstrakte datatyper (kap. 3.1) Stakker (kap. 3.3) Når internminnet blir for lite En lese-/skriveoperasjon på en harddisk (aksesstid 7-12 millisekunder)

Detaljer

EKSAMEN. Algoritmer og datastrukturer

EKSAMEN. Algoritmer og datastrukturer EKSAMEN Emnekode: ITF20006 Emne: Algoritmer og datastrukturer Dato: Eksamenstid: 20. mai 2009 kl 09.00 til kl 13.00 Hjelpemidler: 8 A4-sider (4 ark) med egne notater Kalkulator Faglærer: Gunnar Misund

Detaljer

Dagens tema. Sortering. Fortsettelse om programmering vha tråder.

Dagens tema. Sortering. Fortsettelse om programmering vha tråder. Dagens tema Sortering. Fortsettelse om programmering vha tråder. «orden» i dataene vi blir fort lei av å lete poleksempel internett «alt» er søking og sortering alternativer til sortering og søking binære

Detaljer

Løsningsforslag til INF110 h2001

Løsningsforslag til INF110 h2001 Løsningsforslag til INF110 h2001 Eksamen i : INF 110 Algoritmer og datastrukturer Eksamensdag : Lørdag 8. desember 2001 Tid for eksamen : 09.00-15.00 Oppgavesettet er på : 5 sider inkludert vedlegget Vedlegg

Detaljer

klassen Vin må få en ny variabel Vin neste alle personvariable (personpekere) i listeklassen må byttes til Vin

klassen Vin må få en ny variabel Vin neste alle personvariable (personpekere) i listeklassen må byttes til Vin INF1010 forelesning Lenkelister II Dette skrivet inneholder en oversikt over det jeg planlegger å forelese på andre forlesning om lenkelister. Det inneholder stort sett programeksempler med kommentarer

Detaljer

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet Eksamen i : INF 110 Algoritmer og datastrukturer Eksamensdag : Lørdag 8. desember 2001 Tid for eksamen : 09.00-15.00 Oppgavesettet er på

Detaljer

E K S A M E N. Algoritmiske metoder I. EKSAMENSDATO: 11. desember HINDA / 00HINDB / 00HINEA ( 2DA / 2DB / 2EA ) TID:

E K S A M E N. Algoritmiske metoder I. EKSAMENSDATO: 11. desember HINDA / 00HINDB / 00HINEA ( 2DA / 2DB / 2EA ) TID: Høgskolen i Gjøvik Avdeling for Teknologi E K S A M E N FAGNAVN: FAGNUMMER: Algoritmiske metoder I L 189 A EKSAMENSDATO: 11. desember 2001 KLASSE: 00HINDA / 00HINDB / 00HINEA ( 2DA / 2DB / 2EA ) TID: 09.00-14.00

Detaljer

INF1010 våren januar. Objektorientering i Java

INF1010 våren januar. Objektorientering i Java INF1010 våren 2017 25. januar Objektorientering i Java Om enhetstesting (Repetisjon av INF1000 og lær deg Java for INF1001 og INF1100) Stein Gjessing Hva er objektorientert programmering? F.eks: En sort

Detaljer

Løsnings forslag i java In115, Våren 1998

Løsnings forslag i java In115, Våren 1998 Løsnings forslag i java In115, Våren 1998 Oppgave 1 // Inne i en eller annen klasse private char S[]; private int pardybde; private int n; public void lagalle(int i) if (i==n) bruks(); else /* Sjekker

Detaljer

Repetisjon: Binære. Dagens plan: Rød-svarte trær. Oppgave (N + 1)!

Repetisjon: Binære. Dagens plan: Rød-svarte trær. Oppgave (N + 1)! Repetisjon: Binære søketrær Dagens plan: Rød-svarte trær (kap. 12.2) B-trær (kap. 4.7) bstrakte datatyper (kap. 3.1) takker (kap. 3.3) For enhver node i et binært søketre gjelder: lle verdiene i venstre

Detaljer

Eksamen i IN 110, 18. mai 1993 Side 2 Del 1 (15%) Vi skal se på prioritetskøer av heltall, der vi hele tiden er interessert i å få ut den minste verdi

Eksamen i IN 110, 18. mai 1993 Side 2 Del 1 (15%) Vi skal se på prioritetskøer av heltall, der vi hele tiden er interessert i å få ut den minste verdi UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet Eksamen i Eksamensdag: 18. mai 1993 Tid for eksamen: 9.00 15.00 Oppgavesettet er på 7 sider. Vedlegg: Tillatte hjelpemidler: IN 110 Algoritmer

Detaljer

IN1010 våren januar. Objektorientering i Java

IN1010 våren januar. Objektorientering i Java IN1010 våren 2018 23. januar Objektorientering i Java Om enhetstesting Om arrayer og noen klasser som kan ta vare på objekter Stein Gjessing Hva er objektorientert programmering? F.eks: En sort boks som

Detaljer

Endret litt som ukeoppgave i INF1010 våren 2004

Endret litt som ukeoppgave i INF1010 våren 2004 Endret litt som ukeoppgave i INF1010 våren 2004!!!" # # $# ##!!%# # &##!'! Kontroller at oppgavesettet er komplett før du begynner å besvare det. Les gjerne gjennom hele oppgavesettet før du begynner med

Detaljer

Dagens tema. Sortering. Fortsettelse om programmering vha tråder.

Dagens tema. Sortering. Fortsettelse om programmering vha tråder. Dagens tema Sortering. Fortsettelse om programmering vha tråder. «orden» i dataene vi blir fort lei av å lete poleksempel internett «alt» er søking og sortering alternativer til sortering og søking binære

Detaljer

INF1000 (Uke 15) Eksamen V 04

INF1000 (Uke 15) Eksamen V 04 INF1000 (Uke 15) Eksamen V 04 Grunnkurs i programmering Institutt for Informatikk Universitetet i Oslo Anja Bråthen Kristoffersen og Are Magnus Bruaset 22-05-2006 2 22-05-2006 3 22-05-2006 4 Oppgave 1a

Detaljer

INF1000 (Uke 15) Eksamen V 04

INF1000 (Uke 15) Eksamen V 04 INF1000 (Uke 15) Eksamen V 04 Grunnkurs i programmering Institutt for Informatikk Universitetet i Oslo Anja Bråthen Kristoffersen og Are Magnus Bruaset 22-05-2006 2 22-05-2006 3 22-05-2006 4 Oppgave 1a

Detaljer

Søkeproblemet. Gitt en datastruktur med n elementer: Finnes et bestemt element (eller en bestemt verdi) x lagret i datastrukturen eller ikke?

Søkeproblemet. Gitt en datastruktur med n elementer: Finnes et bestemt element (eller en bestemt verdi) x lagret i datastrukturen eller ikke? Søking Søkeproblemet Gitt en datastruktur med n elementer: Finnes et bestemt element (eller en bestemt verdi) x lagret i datastrukturen eller ikke? Effektiviteten til søkealgoritmer avhenger av: Om datastrukturen

Detaljer

Uke 8 Eksamenseksempler + Ilan Villanger om studiestrategier. 11. okt Siri Moe Jensen Inst. for informatikk, UiO

Uke 8 Eksamenseksempler + Ilan Villanger om studiestrategier. 11. okt Siri Moe Jensen Inst. for informatikk, UiO Uke 8 Eksamenseksempler + Ilan Villanger om studiestrategier 11. okt. 2011 Siri Moe Jensen Inst. for informatikk, UiO 1 Innhold Eksamen INF1000 Høst 2011: Oppgave 4-7 Tekstmanipulering Metoder med og uten

Detaljer

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO Side 1 UNIVERSITETET I OSLO Kandidatnr Det matematisk-naturvitenskapelige fakultet Eksamen i: PRØVEEKSAMEN INF1000 Eksamensdag: Prøveeksamen 22.11.2011 Tid for eksamen: 12:15-16:15 Oppgavesettet er på

Detaljer

Liste som abstrakt konsept/datatype

Liste som abstrakt konsept/datatype Lister Liste som abstrakt konsept/datatype Listen er en lineær struktur (men kan allikevel implementeres ikke-lineært bak kulissene ) Hvert element har en forgjenger, unntatt første element i listen Hvert

Detaljer

Løsningsforslag for Obligatorisk Oppgave 3. Algoritmer og Datastrukturer ITF20006

Løsningsforslag for Obligatorisk Oppgave 3. Algoritmer og Datastrukturer ITF20006 Løsningsforslag for Obligatorisk Oppgave 3 Algoritmer og Datastrukturer ITF20006 Lars Vidar Magnusson Frist 28.03.14 Den tredje obligatoriske oppgaven tar for seg forelesning 9 til 13, som dreier seg om

Detaljer

INF1010. Rekursjon En rekursiv definisjon av rekursjon, slik det kunne stå i en ordbok: Introduksjon til Rekursiv programmering

INF1010. Rekursjon En rekursiv definisjon av rekursjon, slik det kunne stå i en ordbok: Introduksjon til Rekursiv programmering Introduksjon til Rekursiv programmering To iterate is human; to recurse, divine. L. Peter Deutsch, Robert Heller Rekursjon En rekursiv definisjon av rekursjon, slik det kunne stå i en ordbok: rekursjon

Detaljer

INF1000 HashMap. Marit Nybakken marnybak@ifi.uio.no 2. november 2003

INF1000 HashMap. Marit Nybakken marnybak@ifi.uio.no 2. november 2003 INF1000 HashMap Marit Nybakken marnybak@ifi.uio.no 2. november 2003 Dette dokumentet skal tas med en klype salt og forfatteren sier fra seg alt ansvar. Dere bør ikke bruke definisjonene i dette dokumentet

Detaljer

Enkle generiske klasser i Java

Enkle generiske klasser i Java Enkle generiske klasser i Java Oslo, 7/1-13 Av Stein Gjessing, Institutt for informatikk, Universitetet i Oslo Del 1: Enkle pekere Før vi tar fatt på det som er nytt i dette notatet, skal vi repetere litt

Detaljer

G høgskolen i oslo. Emne: Algoritmer og datastrukturer. Emnekode: 80131A. Faglig veileder: UlfUttersrud. Gruppe(r) : Dato: 09.12.

G høgskolen i oslo. Emne: Algoritmer og datastrukturer. Emnekode: 80131A. Faglig veileder: UlfUttersrud. Gruppe(r) : Dato: 09.12. G høgskolen i oslo Emne: Algoritmer og datastrukturer Emnekode: 80131A Faglig veileder: UlfUttersrud Gruppe(r) : Dato: 09.12.2004 Eksamenstid: 9-14 Eksamensoppgaven består av: Tillatte hjelpemidler Antall

Detaljer

INF Notater. Veronika Heimsbakk 10. juni 2012

INF Notater. Veronika Heimsbakk 10. juni 2012 INF1010 - Notater Veronika Heimsbakk veronahe@student.matnat.uio.no 10. juni 2012 1 Tilgangsnivåer 2 CompareTo Modifier Class Package Subclass World public Y Y Y Y protected Y Y Y N no modifier Y Y N N

Detaljer

Algoritmer og Datastrukturer

Algoritmer og Datastrukturer Eksamen i Algoritmer og Datastrukturer Høgskolen i Østfold Avdeling for informatikk og automatisering Torsdag 10. desember 1998, kl. 09.00-15.00 Hjelpemidler: Alle trykte og skrevne hjelpemidler. Kalkulator.

Detaljer

Definisjon. I et binært tre har hver node enten 0, 1 eller 2 barn

Definisjon. I et binært tre har hver node enten 0, 1 eller 2 barn Binære trær Definisjon I et binært tre har hver node enten 0, 1 eller 2 barn Rekursiv definisjon: Et binært tre er enten tomt, eller: Består av en rotnode og to binære trær som kalles venstre subtre og

Detaljer

INF1010. Stein Michael Storleer (michael) Lenkelister

INF1010. Stein Michael Storleer (michael) Lenkelister INF1010 Stein Michael Storleer (michael) Lenkelister Lenke Datastrukturen lenkeliste class { = null ; foran foran = new () ; class { = null ; foran foran = new () ; foran. = new () ; class { = null ; foran

Detaljer

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet Eksamen i Eksamensdag: 6. juni 2006 Tid for eksamen: 1430 1730 Oppgavesettet er på 6 sider. Vedlegg: INF1010 Objektorientert programmering

Detaljer

Introduksjon til objektorientert programmering

Introduksjon til objektorientert programmering Introduksjon til objektorientert programmering Samt litt mer om strenger og variable INF1000, uke6 Ragnhild Kobro Runde Grunnkurs i objektorientert programmering Strategi: Splitt og hersk Metoder kan brukes

Detaljer

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet Eksamen i Eksamensdag: 4. juni 2005 Tid for eksamen: 0900 1500 Oppgavesettet er på 5 sider. Vedlegg: Tillatte hjelpemidler: INF1010 Objektorientert

Detaljer

1- og 2-veis Innkapsling Java Stabel Kø Prio-kø Iterator. Enveis- og toveislister Innkapsling («boxing») (Big Java 6.8.5)

1- og 2-veis Innkapsling Java Stabel Kø Prio-kø Iterator. Enveis- og toveislister Innkapsling («boxing») (Big Java 6.8.5) Dagens tema Litt mer om vanlige lister Enveis- og toveislister Innkapsling («boxing») (Big Java 6.8.5) Nyttige varianter av lister: Stabler («stacks») (Big Java 15.5.1) Køer («queues») (Big Java 15.5.2)

Detaljer

Dagens forelesning. Java 13. Rollefordeling (variant 1) Rollefordeling (variant 2) Design av større programmer : fordeling av roller.

Dagens forelesning. Java 13. Rollefordeling (variant 1) Rollefordeling (variant 2) Design av større programmer : fordeling av roller. Dagens forelesning Java 13 Design av større programmer : fordeling av roller INF 101-13. mars 2003 Flere eksempler på bruk av objekter MVC-prinsippet MVC-prinsippet Flere eksempler på programmer med objekter

Detaljer

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet Eksamen i INF1000 Grunnkurs i objektorientert programmering Eksamensdag: 11. juni 2004 Tid for eksamen: 9.00 12.00 Oppgavesettet er på 8

Detaljer

Binære trær: Noen algoritmer og anvendelser

Binære trær: Noen algoritmer og anvendelser Binære trær: Noen algoritmer og anvendelser Algoritmer / anvendelser: Søking i usortert binært tre Telling av antall noder og nivåer i treet Traversering av binære trær Binære uttrykkstrær Kunstig intelligens(?):

Detaljer

Gjennomgang av eksamen H99

Gjennomgang av eksamen H99 Gjennomgang av eksamen H99 Administrasjon av kurser, studenter og påmeldinger Ole Christian Lingjærde Gruppen for bioinformatikk Institutt for Informatikk Universitetet i Oslo Oppgave 1 (15 %) (Besvares

Detaljer

EKSAMEN. Emne: Algoritmer og datastrukturer

EKSAMEN. Emne: Algoritmer og datastrukturer 1 EKSAMEN Emnekode: ITF20006 000 Dato: 18. mai 2012 Emne: Algoritmer og datastrukturer Eksamenstid: 09:00 til 13:00 Hjelpemidler: 8 A4-sider (4 ark) med egne notater Faglærer: Gunnar Misund Oppgavesettet

Detaljer

Eksamen iin115, 14. mai 1998 Side 2 Oppgave 1 15 % Du skal skrive en prosedyre lagalle som i en global character array S(1:n) genererer alle sekvenser

Eksamen iin115, 14. mai 1998 Side 2 Oppgave 1 15 % Du skal skrive en prosedyre lagalle som i en global character array S(1:n) genererer alle sekvenser UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet Eksamen i IN 115 Algoritmer og datastrukturer Eksamensdag: 14. mai 1998 Tid for eksamen: 9.00 15.00 Oppgavesettet er på 8 sider. Vedlegg:

Detaljer

2 Om statiske variable/konstanter og statiske metoder.

2 Om statiske variable/konstanter og statiske metoder. Litt om datastrukturer i Java Av Stein Gjessing, Institutt for informatikk, Universitetet i Oslo 1 Innledning Dette notatet beskriver noe av det som foregår i primærlageret når et Javaprogram utføres.

Detaljer

Heap og prioritetskø. Marjory the Trash Heap fra Fraggle Rock

Heap og prioritetskø. Marjory the Trash Heap fra Fraggle Rock Heap og prioritetskø Marjory the Trash Heap fra Fraggle Rock Binær heap En heap er et komplett binært tre: Alle nivåene i treet, unntatt (muligens) det nederste, er alltid helt fylt opp med noder Alle

Detaljer

INF1000 EKSTRATILBUD. Stoff fra uke 1-5 (6) 3. oktober 2012 Siri Moe Jensen

INF1000 EKSTRATILBUD. Stoff fra uke 1-5 (6) 3. oktober 2012 Siri Moe Jensen INF1000 EKSTRATILBUD Stoff fra uke 1-5 (6) 3. oktober 2012 Siri Moe Jensen PLAN FOR DAGEN gjennomgå stoff fra uke 1-5(6), men med en litt annen tilnærming kun gjennomgått stoff, men vekt på konsepter og

Detaljer

Algoritmer og Datastrukturer

Algoritmer og Datastrukturer Eksamen i Algoritmer og Datastrukturer IAI 20102 Høgskolen i Østfold Avdeling for informatikk og automatisering Lødag 5. juni 2004, kl. 09.00-13.00 Hjelpemidler: Alle trykte og skrevne hjelpemidler. Kalkulator.

Detaljer

Kapittel 9: Sortering og søking Kort versjon

Kapittel 9: Sortering og søking Kort versjon Kapittel 9: Sortering og søking Kort versjon Redigert av: Khalid Azim Mughal (khalid@ii.uib.no) Kilde: Java som første programmeringsspråk (3. utgave) Khalid Azim Mughal, Torill Hamre, Rolf W. Rasmussen

Detaljer

Eksamen INF1010 V2009 Del B prøveeksamen V2010 Vekt 60 %

Eksamen INF1010 V2009 Del B prøveeksamen V2010 Vekt 60 % Eksamen INF1010 V2009 Del B prøveeksamen V2010 Vekt 60 % Stein Gjessing Institutt for Informatikk Universitetet i Oslo 1 Oppgave 10 Tegning av datastrukturen (vekt 5% av del B) Tegn datastrukturen til

Detaljer

Eksamensoppgaver 2014

Eksamensoppgaver 2014 Eksamensoppgaver 2014 Først kommer alle de relevante små-oppgavene og deretter den store oppgaven. Oppgave 1 (4 p) a) Hva er verdien til tall etter at følgende kode er utført? tall = (5+3)*2 tall = tall+2

Detaljer

Rekursjon. Hanois tårn. Milepeler for å løse problemet

Rekursjon. Hanois tårn. Milepeler for å løse problemet Rekursjon. Hanois tårn. Milepeler for å løse problemet Hanois tårn. Milepeler for å løse problemet Forstå spillet Bestemme/skjønne hvordan spillet løses Lage en plan for hva programmet skal gjøre (med

Detaljer

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet Kandidatnr Eksamen i INF1000 Grunnkurs i objektorientert programmering Eksamensdag: Onsdag 10. juni 2009 Tid for eksamen: 9.00 12.00 Oppgavesettet

Detaljer