Esercizio laboratorio (Java 0) Raccolto stampato nel turno successivo di laboratorio

Documenti analoghi
Liste concatenate. Collezione ordinata di nodi. Carlo Paolo Simona. Anna. ciascun nodo contiene due riferimenti:

Corso sul linguaggio Java

Coda a doppio ingresso (Deque)

Coda a doppio ingresso (Deque)

Liste doppie. Doubly Linked Lists. GT: 6.2 (e 3.3) Argomenti della lezione

Corso sul linguaggio Java

STRUTTURE DATI: OLTRE GLI ARRAY LISTE

Linked Lists. Liste linkate (1) liste linkate ( stack, queues ), trees. Liste linkate come strutture

Informatica 3. LEZIONE 13: Liste doppie, pile e code. Modulo 1: Free list Modulo 2: Lista doppia Modulo 3: Pila Modulo 4: Coda

Linked Lists. Liste linkate (1) Progettazione: struct. Liste linkate (2)

Informatica 3. Informatica 3. LEZIONE 13: Liste doppie, pile e code. Lezione 13 - Modulo 1. Free list (2) Free list. Free list

Le liste. Le liste linkate

Fondamenti di Informatica T-1

Informatica 3. LEZIONE 12: Liste. Modulo 1: ADT lista e implementazione basata su array Modulo 2: Lista concatenata

Fondamenti di Informatica T1 Interfaccia Comparable Collezioni

Implementazione della coda con liste concatenate. x v. il front della coda è memorizzato nel primo nodo (head) della lista

Alberi Binari Alberi Binari

Albero Binario GT 7.3. interfacce di Positio<E>, Tree<E>, e BinaryTree<E>; il file TestLinkedBinaryTree.java

Le liste con array. Rimuovere la perla rossa costringe a spostare molte altre perle. Dove mettere la perla verde se si è esaurito il filo?

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica

Esercizio: Lista Circolare

INFORMATICA 2010/11 - CdL in FISICA TERZO APPELLO 8/09/2011: SOLUZIONI PROPOSTE

1 Strutture di dati dinamiche. 2 Vector come esempio di array dinamico

A. Ferrari. collezioni. Java. Object Oriented Programming

Laboratorio Informatica Classe 4A Serale Venerdì 18/02/2011. Gruppo. Cognome Riontino Nome Raffaele. Cognome Nome

Programmazione 1 A.A. 2015/2016

Alberi. Strutture dati: Alberi. Alberi: Alcuni concetti. Alberi: definizione ricorsiva. Alberi: Una prima realizzazione. Alberi: prima Realizzazione

Esempi in Java di program.ne O-O

Liste concatenate e allocazione dinamica

Esercitazione su Albero Binario

Richiami Java e Arrays

Liste concatenate. Violetta Lonati

Sistemi operativi A, Unix+C, 26/09/2017. Nome: Cognome: Matricola:

Le liste. Prof. Francesco Accarino IIS Sesto San Giovanni Via Leopardi 132

Informatica 3. LEZIONE 17: Alberi generici. Modulo 1: Definizione e ADT Modulo 2: Implementazione Modulo 3: Alberi e classi di equivalenza

Fondamenti di Informatica II

Algoritmi e strutture dati

Informatica 3. Informatica 3. LEZIONE 17: Alberi generici. Lezione 17 - Modulo 1. Introduzione. ADT dell albero generico.

Linguaggio C. Esercizio 1

Esercitazione 1. Possibile soluzione

Programmazione 2. Liste Doppiamente Lincate. Prof. Sebastiano Battiato Prof.ssa Rosalba Giugno

Linguaggio C: Strutture e Liste Concatenate Valeria Cardellini

Esempio su strutture dati dinamiche: ArrayList

Esempio su strutture dati dinamiche: ArrayList

Laboratorio di sistemi Strutture dati ricorsive (2) Java

Passaggio di parametri

Argomenti della lezione. Tipo di dato astratto. Array. Tipo di dato Lista. Liste Implementazione di liste in Java Stack Code

Strutture dati concatenate

Esercitazioni di Fondamenti di Informatica - Lez. 8 27/11/2018

Programmazione in Java Parte II

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 2

PARTE

Altri Esercizi. Corso di Laurea Ingegneria Informatica Fondamenti di Informatica. Dispensa E17. C. Limongelli Maggio 2012

semplici ogni elemento contiene un riferimento al successivo doppie ogni elemento contiene un riferimento al successivo e al precedente

Esercitazione n 2. Obiettivi

Tipi di dati astratti

PROGRAMMAZIONE II canale A-D luglio 2008 TRACCIA DI SOLUZIONE

Altri Esercizi. Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 2. Dispensa E09. C. Limongelli Marzo 2008

Il tipo astratto di dati Node List

E17 Esercizi sugli Array in Java

Alberi binari e di ricerca. Parte 1 BST e GUI. Introduzione. 1. Minimo Antenato Comune. 2. Vistita in ampiezza

//riferimento a una sequenza di oggetti della classe Importo

Classi e array. Viene ora affrontato un problema di definizione di una classe in cui una variabile d istanza è di tipo array

List. Il TDA List. Interfaccia Position. Il TDA Position. Il TDA List 1. Ancora su Position

Il TDA List è la versione orientata agli oggetti della struttura dati lista. Una sequenza di nodi

Esercitazione: Implementazione in linguaggio C dell ADT. Stack con l utilizzo. di linked list

Esempio su strutture dati dinamiche: ArrayList

Esercizio. Strutture Dati

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 2

Passaggio di parametri

Prova d Esame Compito A

Programmazione. Cognome... Nome... Matricola... Compitino del 24 novembre 2008

Scope e visibilità per classi

Alberi Binario in Java

tipi di dato astratti

La struttura dati CODA

Programmazione orientata agli oggetti La classe Object, metodi e classi final, this. Object

Programmazione orientata agli oggetti La classe Object, metodi e classi final, this. Object

Politecnico di Milano - Dipartimento di Elettronica e informazione Prof. Mauro Negri

Alberi ( GT. 7 ) In informatica, un albero è un modello astratto con cui viene rappresentata una struttura gerarchica

Laboratorio 9 ( Java 4 ) Classe astratta per BFS su grafo

Inserimento di un elemento in coda. quale va collegato quello nuovo. ultimo. *lista 8 3. aux. ultimo. *lista 8 3. aux

ALBERI. Angelo Di Iorio Università di Bologna

Esercitazione 11. Liste semplici

Laboratorio di Informatica

E9 Esercizi sul Capitolo 9 Array

Capitolo 14 Introduzione alle strutture di dati. Cay S. Horstmann Concetti di informatica e fondamenti di Java quarta edizione

10/10/2016. Caratteristiche degli array. Il tipo RECORD. Il record. LABORATORIO DI PROGRAMMAZIONE 2 Corso di laurea in matematica

ALGORITMI E STRUTTURE DATI

JAVA. import java.util.*; #include <stdio.h> public static class test { int variable; private int variable; int main (int argc, char *argv[]) {

Conoscere l uso delle collezioni in Java. Conoscere il concetto di Generics (programmazione

Strutture dati dinamiche in C. Emilio Di Giacomo

Gestione dinamica di una coda

Metodi statci. Dichiarazione e chiamata di metodi statci

Sistemi Operativi (M. Cesati)

5. Quinta esercitazione autoguidata: liste semplici

Programmazione. Cognome... Nome... Matricola... Compitino del 24 novembre 2011

Fondamenti di Informatica T-1, 2009/2010 Modulo 2 Prova d Esame 2A di Mercoledì 13 Gennaio 2010 tempo a disposizione 2h30'

Transcript:

Esercizio laboratorio (Java 0) Presentato oggi: lista semplice (senza er) Raccolto stampato nel turno successivo di laboratorio Dovrà essere indicato: cognome e nome matricola turno laboratorio tempo impiegato per lo svolgimento tempo aspettato <= 3 ore obiettivo (per esame finale): 1 ora 1 Lista semplice GT 3.2 (Singly Linked Lists) 2 1

Lista semplice next collezione di nodi ciascun nodo memorizza elemento riferimento al successivo (next) elem Node ordine nodi: determinato dai riferimenti al next non ha un numero prefissato di elementi (dinamica) Lista A B C D 3 Nodo Node element next rappr. grafica MSP semplificata public class Node { // Instance variables: private String element; // we assume elements are character strings private Node next; /** Creates a node with null references to its element and next node. */ public Node() { this(null, null); /** Creates a node with the given element and next node. */ public Node(String s, Node n) { element = s; next = n; // Accessor methods: public String getelement() { return element; public Node getnext() { return next; // Modifier methods: public void setelement(string newelem) { element = newelem; public void setnext(node newnext) { next = newnext; 4 2

class SLinkedList public class SLinkedList { // instance variables protected Node ; // the of the list protected Node ; // the of the list protected long nnodes; // the number of nodes in the list SLinkedList /** Default constructor */ public SLinkedList() { = null; = null; nnodes = 0; nnodes //... update and search methods would go here... // end class 5 Inserzione in testa (addfirst) il metodo deve funzionare anche se la lista è vuota == null 6 3

Inserzione in coda (addlast) a) prima di inserzione b) nuovo nodo c) dopo inserzione NB: il next di viene aggiornato prima di cambiare il valore di 7 Rimozione del primo nodo (removefirst) a) prima di rimozione b) rimozione c) dopo rimozione eccezione: se la lista è vuota 8 4

Altri metodi Rimozione nodo in coda (ultimo nodo) Dobbiamo avere riferimento al penultimo nodo accessibile solo scorrendo tutta la lista O(n) boolean find(string s) void sort() void append (SlinkedList list1) // argomento implicito this Es. a.append(b); SlinkedList concat (SlinkedList list1) //non distruttiva Es.: SlinkedList c = a.concat(b); Costruttore : SLinkedList (String [] vet_str) 9 Proposta di esercizio matricole pari (1) Implementare una lista semplice con elementi di tipo int. Per l implementazione utilizzare le classi Node e SLinkedList opportunamente modificate. (2) Aggiungere alla classe SLinkedList il metodo split() che crea e ritorna una nuova lista formata dai soli valori dispari estratti dalla lista argomento implicito del metodo. Cio avviene senza la creazione di nuovi nodi ma con la sola modifica dei riferimenti. Vedi anche figura di seguito riportata. La lista originaria, dopo l applicazione del metodo split(), conterrà solo i valori pari. (3) Scrivere un main (da subito) per la verifica del corretto funzionamento dei metodi della classe. 10 5

Proposta di esercizio matricole pari V PRIMA 22 30 37 11 18 12 23 V DOPO 22 30 37 11 18 12 23 D Dalla lista originaria V viene estratta la lista dei dispari D. Ciò avviene senza la creazione di nuovi nodi e con la sola modifica dei riferimenti. La lista V, dopo l estrazione della lista D, conterrà solo valori pari. 11 Proposta di esercizio matricole dispari La classe MyString realizza il tipo di dato MyString (stringa di caratteri). La struttura dati interna utilizzata per rappresentare un oggetto di tipo MyString è una lista concatenata semplice. Come esercizio fornire il codice: (1) del costruttore della classe che, a partire da un oggetto di tipo String, costruisce un oggetto di tipo MyString; Ricordare: char c = st1.charat(i) st1 list oggetto MyString corrispondente all oggetto String ABCDEFG di tipo String A B C D E F G 12 6

Proposta di esercizio matricole dispari (2) del metodo int compareto(mystring str) per il confronto (nell ordinamento alfabetico) di due oggetti MyString; il metodo ritorna 1 se il this oggetto è minore dell oggetto str passato come argomento, 0 se gli oggetti sono uguali, 1 se il primo è maggiore del secondo. (3) Scrivere (da subito) un main per la verifica del corretto funzionamento dei metodi della classe. st1 list st1.compareto(str) str list A B C D E F G A B C Z E F 13 Proposta di esercizio matricole dispari class MyString { class Node { //classe interna private char ch; //carattere private Node nxt; //successivo private Node( char cha, Node nx ) { ch = cha; nxt = nx; //fine classe interna protected Node list; public MyString(String st) { // FORNIRE IL CODICE DEL COSTRUTTORE public int compareto( MyString str ) { // FORNIRE IL CODICE DEL METODO 14 7

Proposta di esercizio matricole dispari // inserire metodi: addfirst e addlast // remove facoltativo public void print() { System.out.println(); System.out.print("Stringa: " + '"'); Node p = list; while ( p!= null ) { System.out.print(p.ch); p = p.nxt; System.out.println(); return; //end class MyString 15 8