INF januar 2015 Stein Michael Storleer (michael) Lenkelister

Like dokumenter
INF1010. Stein Michael Storleer (michael) Lenkelister

UNIVERSITETET I OSLO

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

Lenkelister. Lister og køer.

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

Velkommen til INF1010

INF1010 LISTER. Listeelementer og listeoperasjoner. Foran. Bak

Versjon (vil bli endret).

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

INF1010 siste begreper før oblig 2

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

Studieaktiviteter i INF1010

Dagens tema INF1010 INF1010 INF1010 INF1010

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

INF Objektorientert programmering. Datastrukturer i Java Klasser med parametre

UNIVERSITETET I OSLO

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

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

Vanlige datastrukturer. I dette lysarksettet

INF Objektorientert programmering. Datastrukturer i Java Klasser med parametre

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

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

Liste som abstrakt konsept/datatype

INF Notater. Veronika Heimsbakk 10. juni 2012

Lenkelister og beholdere av lenkelister

UNIVERSITETET I OSLO

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

INF1010 Binære søketrær ++

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

UNIVERSITETET I OSLO

Repetisjon. INF gruppe 13

UNIVERSITETET I OSLO

INF1010. Grensesnittet Comparable<T>

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

UNIVERSITETET I OSLO

Hva er en liste? Hvert element har en forgjenger, unntatt første element i listen. Hvert element har en etterfølger, unntatt siste element i listen

Lenkelister og beholdere av lenkelister

Velkommen til. INF våren 2016

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

Array&ArrayList Lagring Liste Klasseparametre Arrayliste Testing Lenkelister

Hva er en liste? Hvert element har en forgjenger, unntatt første element i listen. Hvert element har en etterfølger, unntatt siste element i listen

Enkle generiske klasser i Java

PG4200 Algoritmer og datastrukturer Forelesning 5 Implementasjon av lister

Algoritmer og datastrukturer Kapittel 4 - Delkapittel 4.3

Algoritmer og Datastrukturer

Hva er verdien til variabelen j etter at følgende kode er utført? int i, j; i = 5; j = 10; while ( i < j ) { i = i + 2; j = j - 1; }

Gjennomgang prøveeksamen oppgave 1, 2, 4, 5, 7

Array&ArrayList Lagring Liste Klasseparametre Arrayliste Testing Lenkelister Videre

INF1010 våren januar. Objektorientering i Java

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

OBJEKTER SOM EN PROGRAMMERINGS-TEKNIKK

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

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

Dagens tema C, adresser og pekere

Ark 3 av 26. printf("i adresse %08x ligger b med verdien %d.\n", &b, b); printf("i adresse %08x ligger a med verdien %d.

Sortering med tråder - Quicksort

Algoritmer og datastrukturer Eksamen

INF1000: Forelesning 6. Klasser og objekter del 1

UNIVERSITETET I OSLO

Grunnleggende Datastrukturer

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

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

Algoritmer og datastrukturer Eksamen

UNIVERSITETET I OSLO

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

INF våren 2017

Stack. En enkel, lineær datastruktur

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

Algoritmer og datastrukturer Eksamen

Inf 1020 Algoritmer og datastrukturer

Innhold uke 4. INF 1000 høsten 2011 Uke 4: 13. september. Deklarasjon av peker og opprettelse av arrayobjektet. Representasjon av array i Java

UNIVERSITETET I OSLO

IN våren 2019 Onsdag 16. januar

IN våren 2018 Tirsdag 16. januar

IN1010 våren januar. Objektorientering i Java

Oppgave 1. Oppgave 2. Høgskolen i Østfold Avdeling for informasjonsteknologi

Løsningsforslag eksamen INF1020 høsten 2005

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

Forkurs INF1010. Dag 2. Andreas Færøvig Olsen Gard Inge Rosvold Institutt for Informatikk, 14.

OPPGAVE 5b og 8b Java Kode

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

UNIVERSITETET I OSLO

Algoritmer og datastrukturer Eksamen

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

INF1010, 15. januar time. Parametriserte klasser (generiske klasser) Stein Gjessing Inst. for Informatikk Universitetet i Oslo

Introduksjon til objektorientert. programmering. Hva skjedde ~1967? Lokale (og globale) helter. Grunnkurs i objektorientert.

Oppsummering. Kort gjennomgang av klasser etc ved å løse halvparten av eksamen Klasser. Datastrukturer. Interface Subklasser Klasseparametre

Sensur-veiledning INF1000 h 2013 (fasit) am - 6. des. 2013

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

UNIVERSITETET I OSLO

INF1010, 22. mai Prøveeksamen (Eksamen 12. juni 2012) Stein Gjessing Inst. for Informatikk Universitetet i Oslo

Gjennomgang av eksamen H99

INF1010 våren Grensesnitt

UNIVERSITETET I OSLO

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

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

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

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

Transkript:

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 i lista det som skal listes opp class { ; String data ;

Lenkelista må «festes» første, first, foran, hode, head siste, last, bak, hale, tail class { ; String data ; foran, bak; foran = new (); bak = foran;

Hvordan får vi tak i en peker 7l objektet med variabelen tall? Hvordan får vi tak i innholdet 7l variabelen tall? int? tall null foran bak

int? tall null foran bak

int? tall null bak

SeRe inn en ny node foran public void serinnforan ( ny ) { ny. = foran; foran = ny;

Ta ut en node foran public tautforan() { ut = foran; foran = foran.; return ut; Hva må vi kreve av 7lstanden i lista før vi kaller tautforan?

SeRe inn en node bak bak Hva må vi kreve av 7lstanden i lista for at de;e skal bli rik7g?

SeRe inn en node bak bak Hva må vi kreve av 7lstanden i lista for at de;e skal bli rik7g?

Ta ut en node bak bak Hva må vi kreve av 7lstanden i lista for at de;e skal bli rik7g?

Hvilken datastruktur har vi nå laget? Et mønster for nodeobjekter Vi lager nye noder med new () Pekervariable for å peke ut første og/eller siste objekt i lenkelista Metoder for å sere inn og ta ut nodeobjekter Og mer trenger vi ikke.

Hvilken datastruktur har vi nå laget? class { ; String data ; foran, bak; foran = new (); bak = foran; public tautbak() {???????? public tautforan() { ut = foran; foran = foran.; return ut; public void serinn ( ny ) { ny. = foran; foran = ny;

Objektorientert programmering? class { ; String data ; foran, bak; foran = new (); bak = foran; public tautforan() { ut = foran; foran = foran.; return ut; public void serinn ( ny ) { ny. = foran; foran = ny;

Objektorientert programmering? class Lenkeliste { foran, bak; Lenkeliste () { foran = new (); bak = foran; class { ; String data ; public void serinn ( ny ) { ny. = foran; foran = ny; public tautforan() { ut = foran; foran = foran.; return ut;

Objektorientert programmering? String s = OO- programmering ; Lenkeliste ordliste = new Lenkeliste(); n = new (); n.data = s; Ordliste.seRInn(n); class Lenkeliste { foran, bak; Lenkeliste () { foran = new (); bak = foran; public void serinn ( ny ) { ny. = foran; foran = ny; public tautforan() { ut = foran; foran = foran.; return ut; class { ; String data ;

Objektorientert programmering! class Lenkeliste { private class { ; String data ; (String s) { data = s; foran, bak; Lenkeliste () { foran = new (); bak = foran; public void serinn ( ny ) { public tautforan() {

Objektorientert programmering! class Lenkeliste { private class { ; String data ; (String s) { data = s; public void serinnforan ( String s ) { ny = new (s); ny. = foran; foran = ny; private foran, bak; Lenkeliste () { foran = new (); bak = foran; public void serinnforan ( String s ) { public String tautforan() {

Objektorientert programmering! class Lenkeliste { private class { ; Ka) data ; (Ka) k) { data = k; public void serinnforan ( Ka) k ) { ny = new (k); ny. = foran; foran = ny; private foran, bak; Lenkeliste () { foran = new (); bak = foran; public void serinnforan ( Ka) ) { public Ka) tautforan() {

En lenkeliste<t> for hva som helst class Lenkeliste<T> { private class { ; T data ; (T t) { data = t; public void serinnforan ( T t ) { ny = new (t); ny. = foran; foran = ny; private foran, bak; Lenkeliste () { foran = new (); bak = foran; public void serinnforan ( T t) { public T tautforan() {

Kan nodene ordnes? Ja, men da må vi ha et ordningskriterium Hvorfor er det vanskelig i Lenkeliste<T>?

Hvilke metoder bør generelle lenkelister ha? boolean tom() serinn- metoder finn- metoder taut- metoder enkeltobjekter arrayer, mengder av objekter int antall()

SeR inn bak, ta ut foran Først inn først ut First In First Out FIFO vanlig kø queue Merk at det er metodene som se;er inn og tar ut som bestemmer om lenkelista fungerer som en fifo- kø.

SeR inn foran, ta ut foran Sist inn først ut Last In First Out LIFO stabel stack Merk at det er metodene som se;er inn og tar ut som bestemmer om lenkelista fungerer som en stabel.

Ta ut en node bak foran bak

foran Public tautbak() { ut = null; if ( antall() > 1 ) { bak ut = foran; while ( ut.!= bak ) { ut = ut.; bak = ut; ut = bak.; bak. = null; else if (antall() == 1 ) { // er element, særbehandle det return ut;

Datastruktur i lenkelisteobjektet enkelt- eller dobbeltlenket (to pekere) listehode- og hale slipper å særbehandle 7lfellene: lista er tom er objekt, dvs. foran == bak intern ordning av objektene (sortering) hvis mange: lerer gjenfinning vanskeligere å skrive metodene lerere å gjøre feil tenk 1lstandspåstander før og erer metodekall