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