Stabler, Køer og Lister. ADT er

Like dokumenter
n / ($$ n 0$$/ $ " 1! <! ')! $ : ; $.+ $.5.+ .!)/!/ ) $.) 6$ 7$, $.5., $ 7$,

ADT og OO programmering

INF januar 2015 Stein Michael Storleer (michael) Lenkelister

PrioritetsKøer. i-120 : H PrioritetsKøer: 1. Container. n-te/vilkårlig. PositionalContainer. PositionalSequence. Tree. Deque PriorityQueue

Abstrakt programmering. En Type

Container ADT. Sekvenser. int size(); antall elementer i samlingen */ boolean isempty(); true hviss samlingen er tom */

IN1010 våren 2018 Tirsdag 13. februar. Interface - Grensesnitt

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

Samlinger, Lister, Sekvenser

INF1010 våren 2017 Torsdag 9. februar. Interface - Grensesnitt

Det finnes ingenting. som kan gjøres med interface. men som ikke kan gjøres uten

ADTer: Stabel, Kø og 2-sidig Kø. ADT Kø (eng: queue) ... En tabell-basert kø. Abstrakt Data Type Kø

Om Grafiske Bruker-Grensesnitt (GUI) Hvordan gjør vi det, to typer av vinduer? GUI (Graphical User Interface)-programmering

INF1010. Stein Michael Storleer (michael) Lenkelister

Enkle datastrukturer. Lars Greger Nordland Hagen. Introduksjon til øvingsopplegget og gjennomgang av python

TOD063 Datastrukturer og algoritmer

Grunnleggende Datastrukturer

INF1010 LISTER. Listeelementer og listeoperasjoner. Foran. Bak

Inf1010 oppgavesamling

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

STABLER OG REKURSJON. Abstrakte Data Typer (ADT) Stabler. ADT Stabel

IN1010 våren 2019 Onsdag 15. mai. Rask repetisjon av subklasser og tråder (pluss µ nytt)

Inf1010 oppgavesamling

Inf 1020 Algoritmer og datastrukturer

EKSAMEN. Algoritmer og datastrukturer. Eksamensoppgaven: Oppgavesettet består av 11 sider inklusiv vedlegg og denne forsiden.

Algoritmer og datastrukturer Kapittel 4 - Delkapittel 4.3

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

INF3030 Uke 6, våren Eric Jul PSE Inst. for informatikk

INF3030 Uke 7, våren Eric Jul PSE Inst. for informatikk

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

INF1010 våren 2017 Torsdag 26. januar. Arv og subklasser del 1. Stein Gjessing Institutt for informatikk Universitetet i Oslo

Magnus Moan (Undertegnede) Enkle datastrukturer, trær, traversering og rekursjon

Stack. En enkel, lineær datastruktur

PG4200 Algoritmer og datastrukturer Forelesning 5 Implementasjon av lister

PrioritetsKøer. i-120 : h98 8. PrioritetsKøer: 1. Samling. n-te/vilkårlig. FiLi. PosSamling. Sequence

Hva er en kø? En lineær datastruktur der vi til enhver tid kun har tilgang til elementet som ble lagt inn først

Dagens tema INF1010 INF1010 INF1010 INF1010

Array&ArrayList Lagring Liste Klasseparametre Arrayliste Testing Lenkelister

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

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

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

Hvordan gjør vi det, to typer av vinduer? Om Grafiske Bruker-Grensesnitt (GUI) GUI (Graphical User Interface)-programmering

INF2440, Uke 3, våren 2018 Regler for parallelle programmer, mer om cache og Radix-algoritmen. Eric Jul PSE, Inst. for informatikk

IN3030 Uke 12, v2019. Eric Jul PSE, Inst. for informatikk

Velkommen til INF1010

Ordbøker I. ORDBOK /PRIORITETSKØ = SEKVENS /LIFI II. IMPLEMENTASJON MED SEQUENCE III.IMPLEMENTASJON MED HASH TABELL

INF Notater. Veronika Heimsbakk 10. juni 2012

Lenkelister. Lister og køer.

Vi lærte sist å lage vinduer. Om å lage et vindu. GUI (Graphical User Interface)-programmering. Inf GUI - del 2

PRIORITETSKØ. Aksjehandel. Datastruktur for aksjehandel. Nøkler og Totalorden-relasjonen

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

EKSAMEN Løsningsforslag. med forbehold om bugs :-)

Algoritmer og datastrukturer Kapittel 11 - Delkapittel 11.2

PrioritetsKøer I. ADGANG TIL ELEMENTER I EN SAMLING II. TOTALE ORDNINGER OG NØKLER III.PRIORITETSKØ ADT IV. IMPLEMENTASJON MED SEQUENCE ADT

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

Studieaktiviteter i INF1010

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

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

Versjon (vil bli endret).

Algoritmer og Datastrukturer

INF2440 Uke 5, våren2018. Eric Jul PSE Inst. for informatikk

Array&ArrayList Lagring Liste Klasseparametre Arrayliste Testing Lenkelister Videre

Oppgave 1. Stabler og Køer (30%)

Kunne beskrive bruken av referansepekere og videre kunne. Kunne sammenligne lenkede datastrukturer med tabellbaserte

UNIVERSITETET I OSLO

Hva er en kø? En lineær datastruktur der vi til enhver tid kun har tilgang til elementet som ble lagt inn først

Datastrukturer. Stakker (Stacks) Hva er en datastruktur? Fordeler / Ulemper. Generelt om Datastrukturer. Stakker (Stacks) Elementære Datastrukturer

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

Hva er en kø? En lineær datastruktur der vi til enhver tid kun har tilgang til elementet som ble lagt inn først

INF1010 våren 2005 Uke 3, 25. januar Arv og subklasser del I

Løsningsforslag for eksamensoppgave, våren 2004

Algoritmer og Datastrukturer

Hva er en stack? En lineær datastruktur der vi til enhver tid kun har tilgang til elementet som ble lagt inn sist

Hva er en stack? En lineær datastruktur der vi til enhver tid kun har tilgang til elementet som ble lagt inn sist

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

Algoritmer og datastrukturer Kapittel 3 - Delkapittel 3.1

Algoritmer og datastrukturer Eksamen

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

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

INF1010 siste begreper før oblig 2

Avdeling for ingeniørutdanning Institutt for teknologi

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

IN1010 våren januar. Objektorientering i Java

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

INF1010. grensesni-et Comparable<T> grensesni-et Iterable<T> rekursjon

INF2440 Uke 6, våren Eric Jul PSE Inst. for informatikk

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

Tråder i Java Parallelle programmmer og programbiter

IN3030 Uke 5, våren Eric Jul PSE Inst. for informatikk

Oppgave 1 a. INF1020 Algoritmer og datastrukturer. Oppgave 1 b

Løsningsforslag eksamen INF1020 høsten 2005

UNIVERSITETET I OSLO

Oppgave 1. Løsningsforslag til eksamensoppgave. ITF20006 Algoritmer og datastrukturer Postorden traversering:

Liste som abstrakt konsept/datatype

Programmering og Problemløsning, 2017

INF1020 Algoritmer og datastrukturer. Dagens plan

INF våren januar, uke 3 - Oversikt og forutsetninger Java datastruktur-tegninger

IN1010 våren Repetisjon av tråder. 15. mai 2018

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

INF Seminaroppgaver til uke 3

Transkript:

Stabler, er og Lister I. STEL OG QUEUE DT I.1 DT I.2 rray implemetasjo I.3 Liket-Liste implemetasjo II. DQUEUE DT III.IMPLEMENTSJON V EN DT MED EN NNEN DT Kap. 3 (kursorisk: 3.1.3, 3.2.3, 3.4; utatt: 3.2.4, 3.5) i-120 : H-98 5. Stabler og er: 1 DT er /** LIFO kø av vilkårlige Objekter * S.push(o).peek() == o ; S.push(o).pop() == o & S */ public iterface Stack { /** setter i et ytt objekt på pe * @param o Objektet som skal iettes */ void push(object o); /** returerer pe av stabel * @retur Objektet som ble isatt * @exceptio EmptyExc hvis stabel er tom*/ Object peek() throws EmptyExc; /** fjerer og returerer pe * @retur peek() og fjer de fra stabel * @exceptio EmptyExc hvis stabel er tom*/ Object pop() throws EmptyExc; /** sjekker om stabel er tom */ boolea empty(); /** FIFO kø av vilkårlige Objekter * S.equeue(o).frot() = S.frot() hvis!s.empty();ellers * S.equeue(o).dequeue() Q = S.dequeue() Q.equeue(o) */ public iterface Queue { /** setter i et ytt objekt på slutte * @param o Objektet som skal iettes */ void equeue(object o); /** returerer første Objektet i køe * @retur Objektet som har vært i køe legst * @exceptio EmptyExc hvis køe er tom*/ Object frot() throws EmptyExc; /** fjerer og returerer første Objektet * @retur frot() og fjer de fra køe * @exceptio EmptyExc hvis køe er tom*/ Object dequeue() throws EmptyExc; /** sjekker om køe er tom */ boolea empty(); i-120 : H-98 5. Stabler og er: 2

Egetlig public iterface Samlig { /** atall Objekter i samlige */ it size(); /** sat hviss ige Objekter */ boolea empty(); /** samlig med mulighet for aa sett i/fjere */ public iterface LiFi exteds Samlig { /** setter i et ytt objekt * @param o Objektet som skal isettes */ void setti(object o); /** returerer et Objektet fra køe * @retur Objektet som skulle fjeres */ Object frot() throws EmptyExc; /** fjerer og returerer frot Objektet * @retur frot() og fjer de fra køe */ Object het() throws EmptyExc; public iterface Stack exteds LiFi { /** setti(o) tilsvarer push(o) het() tilsvarer pop() */ public iterface Queue exteds LiFi { /** setti(o) tilsvarer equeue(o) het() tilsvarer dequeue() */ i-120 : H-98 5. Stabler og er: 3 public class Stab IMPLEMENTS STK { private Object[] r; private it oe, max=10; Stabel med rray public Stab() { r= ew Object[max]; oe= -1; public void push(object o) { if (oe=max-1) { Object[] temp= ew Object[max]; opy(r, tab); max= 2*max; r= ew Object[max]; opy(tab,r); oe++; r[oe]= o; public Object pop() oe else { oe--; retur r[oe+1]; public Object peek() else retur r[oe]; public boolea empty() { retur oe < 0; public it size() { retur oe+1; private opy(object[] fra, Object[] til) { for (it k=0; k<fra.legth; k++) til[k]= fra[k]; O(1) oe r[oe] er pe av stabel hvis oe+1 = atall eter > 0 max = r.legth: max > oe >= -1 r 0 1 2 3 4 oe oe r 0 1 2 3 4 pop() push(x) r 0 1 2 3 X 4 i-120 : H-98 5. Stabler og er: 4

Queue med rray public iterface Queue { void equeue(object o); Object dequeue(); Object frot(); boolea empty(); equeue(d) D dequeue() D I. DT REPRESENTSJON e array med e peker for este isettig e peker tilsvarede første II. DT STRUKTUR f r Object[] r 0 1 it, f 2 it max 3 D III.DT INVRINT /f ideks til este / første tom hviss ==f (iitielt begge er 0) Når er de full? Etter max-isettiger==f! full år # == max 1 # = (max f + ) mod max < max kø tilsv. [f, f+1%max, f+2%max,, 1] equeue(d) f dequeue() f r 0 1 2 3 r 0 1 2 3 D 0 1 2 3 0 1 2 3 0 1 2 3 D Z D Z X Y D Z X f f f i-120 : H-98 5. Stabler og er: 5 public class /f ideks til este / første IMPLEMENTS QUEUE { tom hviss ==f private Object[] r; # = (max f + ) mod max < max private it, f, max=10; full hviss # == max 1 kø tilsv. [f, f+1%max, f+2%max,, -1] public () { r= ew Object[max]; // verifiser DI & O() =0; f=0; public void equeue(object o) { if (size() < max-1) { r[] = o; = ( + 1) % max; else {??? public Object dequeue() if (empty()) throw ew EmptyExc( Tom ved dequeue() ); else { tmp= r[f]; f = (f +1) % max; retur tmp; public Object frot() if (empty()) throw ew EmptyExc( Tom ved frot() ); else retur r[f]; public boolea empty() { retur f == ; public it size() { retur (max f + ) % max; O(1) i-120 : H-98 5. Stabler og er: 6

Liket Liste DT public class Node { private Object ; private Node ext; public Node(Object o, Node ) { = o; ext= ; public Node() { this(ull, ull); Object getelem() { retur ; Node getnext() { retur ext; void setelem(object o) { = o; void setnext(node ) { ext= ; Node h= ew Node(,ull); h= ew Node(,h); h Node g= ew Node(,h) g i-120 : H-98 5. Stabler og er: 7 Stabel / med LL St St St i-120 : H-98 5. Stabler og er: 8

Stabel / med LL public class StabL IMPLEMENTS STK { private Node ; private it s; public StabL() { = ull; s= 0; public void push(object o) { = ew Node(o,); s++; public Object pop() else { Object u=.getelem(); =.getnext(); s--; retur u; public Object peek() if (empty()) throw ew EmptyExc() ; else retur.getelem(); public boolea empty() { retur (==ull); public it size() { retur s; public class L IMPLEMENTS QUEUE { private Node, ; private it s; public L() {= ull; = ull; s= 0; public void equeue(object o) { Node l= ew Node(o,ull); if (!= ull).setnext(l); if ( == ull) = l; = l; s++; publicobjectdequeue()throwsemptyexc{ else { Object u=.getelem(); =.getnext(); s--; retur u; public Object frot() else retur.getelem(); public boolea empty() { retur (==ull); public it size() { retur s; O(1) i-120 : H-98 5. Stabler og er: 9 Lister og Listebasertre DataStrukturer travers. fra isettig fjerig EN-VEIS este første første første (Stabel) este første, første første e e () f f f TO-VEIS este, første første første forrige vilkårlig vilkårlig f f f este, første, første, første, forrige vilkårlig, vilkårlig, e e e i-120 : H-98 5. Stabler og er: 10

iterface DQueue /** e samlig - kø - der objektee ka isettes/fjeres i begge eder */ exteds Samlig { /** setter i et ytt objekt i starte * @param o Objektet som skal isettes */ void isertfirst(object o); /** setter i et ytt objekt på slutte * @param o Objektet som skal isettes */ void isertlast(object o); /** fjerer objekt fra starte * @retur Objektet som fjeres void removefirst(object o) throws EmptyExc; /** fjerer objekt fra slutte * @retur Objektet som fjeres void removelast(object o) throws EmptyExc; /** returerer første Objektet i køe * @retur første objektet i køe Object first() throws EmptyExc; /** returer e Objektet * @retur e objektet i køe Object last() throws EmptyExc; implemetasjo med toveis-liste med og gir alle operasjoee O(1) i-120 : H-98 5. Stabler og er: 11 implemetasjo av e DT med e ae DT class StackDQ implemets Stack { private DQueue d; public StackDQ(DQueue e) { d= e; public void push(object o) { d.isertfirst(o); public Object pop() retur d.removefirst(); public Object peek() retur d.first(); public boolea empty() { returd.empty(); public it size() { retur d.size(); class DQ implemets Queue { private DQueue d; public DQ(DQueue e) { d= e; public void equeue(object o) { d.isertfirst(o); public Object dequeue() retur d.removelast(); public Object frot() retur d.first(); public boolea empty() { returd.empty(); public it size() { retur d.size(); ruker bestemmer hvilke implemetasjo av DQueue ha vil bruke år ha oppretter et ytt objekt kaller ew StackDQ(???), ew DQ(???) i-120 : H-98 5. Stabler og er: 12