Länkade listor á la C/C++

Slides:



Advertisements
Liknande presentationer
Algoritmer och data strukturer -Länkade listor
Advertisements

Imperativ Programmering
Fortsättningskurs i Programmering lektion 6
Binära Sökträd, kapitel 19
Föreläsning 6 Länkade lista Komplexitet Linjärsökning & binärsökning
C-programmering ID120V William Sandqvist Länkad lista
Övning5 Så här ska man tänka när man löser uppgift 1 på tentan lite grafik, så här söker man genom en lista så här läser man från en fil i java lösa uppgift.
Programmeringsteknik för K och Media
Föreläsning 10 Länkade lista Stack och Kö Att arbeta med listor
Föreläsning 6 Referenser Objekt som parametrar public/private Klassvariabler och klassmetoder.
Föreläsning 2 Primitiva datatyper Variabler och konstanter Tilldelning Inläsning Operatorer Villkorssatsen if Slingor: while och for.
Next previous Innehåll Inledning Några enkla exempel Pekare till och kort beskrivning av större exempel Speciella referenser (som används i marginalen)
Strömmar Vid läsning och skrivning används något som kallas strömmar.
i olika programmeringsspråk
Föreläsning 4, Kapitel 4 Gruppera objekt Kursbok: “Objects First with Java - A Practical Introduction using BlueJ”, David J. Barnes & Michael Kölling.
Föreläsning 11 Arrayer.
OOP F4:1 Marie Olsson OOP Objekt-orienterad programmering Föreläsning 4 Metoder klass-metoder instans-metoder.
Programmering i C# 3. Klasser.
Repetition inför slutprovet
Föreläsning 4 Kö Implementerad med array Implementerad med länkad lista Djup kontra bredd Bredden först mha kö.
int res2=Math.max(tal1,tal2);
Föreläsning 2 Kort Översikt Över Javaspråket. Källkodsformat Unicode används åäöμψζ tillåtna Inte alla miljöer klarar av det Källkod Bytekod Java VM för.
1 ITK:P1 Föreläsning 7 Algoritmer och datastrukturer DSV Marie Olsson.
Vektorer (klassen Vector) Sortering
Programmeringsteknik för Media1 & K1
OOP F6:1 Stefan Möller OOP Objekt-orienterad programmering Föreläsning 6 Mer om klasser och objekt Hantera många objekt ArrayList toString() – metoden.
OOP F3:1 Marie Olsson OOP Objekt-orienterad programmering Föreläsning 3 Iteration Många variabler av samma sort – Arrayer.
Riktade listor i C och Java Lösning till gruppövning 1.
1 Föreläsning 6 Programmeringsteknik och Matlab 2D1312/2D1305 Metoder & parametrar Array API och klassen ArrayList.
Föreläsning 10 Stränghantering.
Föreläsning 1 Reserverade ord Javas API Identifierare Litteraler Variabler Kompilering och interpretering.
Föreläsning 5 Arrayer & ArrayList Hur man använder API:n
TILLÄMPAD DATALOGI (TILDA) Övning 3
William Sandqvist C-programmering ID120V Stack och Kö William Sandqvist
För utveckling av verksamhet, produkter och livskvalitet. Stack och Kö - Implementering - Tilllämpningar.
Datastrukturer och algoritmer
OOP F14:1 Stefan Möller OOP Objekt-orienterad programmering Föreläsning 14 Repetition Tips inför inlämningsuppgift 2.
1 ITK:P2 F6 Sortering av generiska containerklasser DSV Peter Mozelius.
Stack och Kö -Implementering -Tilllämpningar -- Kapitel 16, 11.
1. Ett problem/uppgift.
PROGRAMMERINGSTEKNIK Övningsgrupp 3 Marcus Hjelm
Föreläsning 4 programmeringsteknik och Matlab 2D1312/ 2D1305
Föreläsning 1 Om kursen Reserverade ord Javas API Identifierare Litteraler Variabler Kompilering och interpretering.
F6 - Pekare 1 Programmeringsteknik, 4p vt-00 Pekare & adresser Alla variabler är knutna till en viss adress i minnet int i; adressen till denna fås med.
Föreläsning 3, Kapitel 3 Objektinteraktion - Skapa objekt som samarbetar Kursbok: “Objects First with Java - A Practical Introduction using BlueJ”, David.
OOP F13:1 Marie Olsson OOP Objekt-orienterad programmering Föreläsning 13 Repetition variabler, selektion och iteration.
Träd -Allmänt om träd -Binärt träd -Filkomprimering med Huffman träd
Köer -- Kapitel 16. Principen med en kö Köer är FIFO datastrukturer  First In – First Out  enqueue() Lägg till data i kön (först)  dequeue() Hämta.
Föreläsning 17 Repetition. Källkodsformat Unicode används åäöμψζ tillåtna i namn på identifierare Inte alla miljöer klarar av det Källkod Bytekod Java.
ITM1 Kapitel 8 Datastrukturer Grundläggande datavetenskap, 4p Utgående från boken Computer Science av: J. Glenn Brookshear.
Föreläsning 3 Villkorssatsen if Slingor: while och for Felsökning.
TILLÄMPAD DATALOGI (TILDA) Övningsgrupp 2 Marcus Hjelm
TILLÄMPAD DATALOGI (TILDA) Övning 1 Marcus Hjelm
OOP F5:1 Stefan Möller OOP Objekt-orienterad programmering Föreläsning 5 Klasser och objekt Skapa objekt - new Referenser Konstruktorer Inkapsling.
Övning2 programmeringsteknik och Matlab 2D1312/ 2D1305
Övning 3. Repetition Metoder class RepetitionMetoder { public static void main(String [] args) double längd = 2.0; double bredd = 1.0; double area =
TILLÄMPAD DATALOGI (TILDA) Övning 2
TILLÄMPAD DATALOGI (TILDA) Övning 2
Programmeringsteknik för K och Media
För utveckling av verksamhet, produkter och livskvalitet. Algoritmer och Datastrukturer -- Kap 21,14 Prioritets Köer (Priority Queues ), Graph.
Föreläsning 7 Repetition Sammansatta datatyper –vektor (hakvektor, array) –matris.
Anders Sjögren Data (i primärminnet) som en länkad lista datatypen för varje element i listan är en struktur, post ( struct )
1 Föreläsning 2 Reserverade ord Javas API Identifierare Litteraler Variabler Kompilering och interpretering.
OOP&M - teori1 OOP – Föreläsning 7 (Sista oop I) Konstruktioner för att hantera upprepningar Kapitel 11.
Malmö högskola Rolf Axelsson 2003/2004 DA7231, 4 poäng Referensvariabel Klass och konstruktorer Klass med set- och get-metoder Klass och fält Fler metoder.
För utveckling av verksamhet, produkter och livskvalitet. Algoritmer och datastructurer - En annan sort tänkande, rekursiva metoder -Datastrukturen träd.
Föreläsning 3: Booleans, if, switch
Föreläsning 8: Exempel och problemlösning
Föreläsning 12: Exempel och problemlösning
Innehåll: Arrays Arraylists For loops For-each loops
Presentationens avskrift:

Länkade listor á la C/C++

// i Java public class ListNode { public char element; public ListNode next; } // i C/C++ struct ListNode { char element; ListNode *next; };

public class Lists { public static ListNode toList(String chars) public static ListNode copy(ListNode l) public static ListNode removeAll(ListNode l,char c) // Laboration 3 public static String toString(ListNode l) public static boolean contains(ListNode l,char c) public static ListNode copyUpperCase(ListNode l) public static ListNode addFirst(ListNode l,char c) private static ListNode getLastNode(ListNode l) public static ListNode addLast(ListNode l,char c) public static void concat(ListNode l1,ListNode l2) public static void addAll(ListNode l1,ListNode l2) public static ListNode reverse(ListNode l) }

Exempel på användning Listnode l1,l2,l3,l4; l1 = Lists.toList("XabIdRXA7pX"); l2 = Lists.copy(l1); Lists.removeAll(l2,'X'); Lists.addFirst(Lists.addLast(l2,'P'),'S'); l3 = Lists.copyUpperCase(l2); l4 = Lists.reverse(l3); l1: [’X’,’a’,’b’,’I’,’d’,’R’,’X’,’A’,’7’,’p’,’X’] l1: [’X’,’a’,’b’,’I’,’d’,’R’,’X’,’A’,’7’,’p’,’X’] l2: [’a’,’b’,’I’,’d’,’R’,’A’,’7’,’p’] l2: [’S’,’a’,’b’,’I’,’d’,’R’,’A’,’7’,’p’,’P’] l3: [’S’,’I’,’R’,’A’,’P’] l3: [’S’,’I’,’R’,’A’,’P’] l4: [’P’,’A’,’R’,’I’,’S’]

toList x y public static ListNode toList(String chars) { head ptr1 y ptr1 head x public static ListNode toList(String chars) { ListNode head,ptr1; // head pekar alltid på listans huvud head = new ListNode(); // Listans huvud (innehåller ej data) head.next = null; // Avsluta listan ptr1 = head; // ptr1 pekar alltid på sista noden // Bygg en lista av tecken, x,y,z,... for ( int i = 0; i < chars.length(); i++ ) { char c = chars.charAt(i); ptr1.next = new ListNode(); // Addera en ny nod sist ptr1 = ptr1.next; // Flytta fram till nya noden ptr1.element = c; // Sätt in tecknet ptr1.next = null; // Avsluta listan } return head;

copy y l x z ptr2 ptr2 ptr2 ptr2 head x y z ptr1 ptr1 ptr1 ptr1

copy public static ListNode copy(ListNode l) { ListNode head,ptr1,ptr2; head = new ListNode(); // Kopian head.next = null; ptr1 = head; ptr2 = l.next; // första listelementet i originallistan while ( ptr2 != null ) { ptr1.next = new ListNode(); // Ny nod i kopian ptr1 = ptr1.next; // Flytta fram ptr1.element = ptr2.element; // Kopiera tecknet ptr1.next = null; // Avsluta listan ptr2 = ptr2.next; // Flytta fram i originallistan } return head;

removeAll // Ta bort alla noder som innehåller c ur l public static ListNode removeAll(ListNode l,char c) { ListNode p = l; // p pekar alltid på noden bakom aktuell nod while ( p.next != null ) { ListNode temp = p.next; // Handtag på aktuell nod if ( temp.element == c ) // Skall den tas bort? p.next = temp.next; // Länka förbi else p = p.next; // Nej, gå vidare * } * p får ej flyttas om den efterföljande noden togs bort! return l;

Automatisk testning Regressionstestning JUnit BlueJ stöder JUnit Upprepade test efter kodförändringar JUnit Ett javaramverk för automatisk regressionstestning Varje klass har en testklass BlueJ stöder JUnit Testa detta i lab 3!

En testklass för Lists public class JunitListTest { public void testEquals() public void testCopy() public void testRemoveAll() public void testToString() public void testContains() public void testCopyUpperCase() public void testAddFirst() public void testAddLast() public void testConcat() public void testAddAll() public void testReverse() }