![Page 1: DidaWiki [DidaWiki] - Lezione 8 Listedidawiki.cli.di.unipi.it/lib/exe/fetch.php/informatica/... · 2018-04-23 · Esercizio 1 Prova del 18/05/2009 Algoritmica - Prova di Laboratorio](https://reader031.vdocuments.net/reader031/viewer/2022041516/5e2b26dca63f2e4de2674ca5/html5/thumbnails/1.jpg)
Rossano Venturini [email protected]
Lezione 8 Liste
Pagina web del corso http://didawiki.cli.di.unipi.it/doku.php/informatica/all-b/start
![Page 2: DidaWiki [DidaWiki] - Lezione 8 Listedidawiki.cli.di.unipi.it/lib/exe/fetch.php/informatica/... · 2018-04-23 · Esercizio 1 Prova del 18/05/2009 Algoritmica - Prova di Laboratorio](https://reader031.vdocuments.net/reader031/viewer/2022041516/5e2b26dca63f2e4de2674ca5/html5/thumbnails/2.jpg)
Esercizio 1 Prova del 18/05/2009
Algoritmica - Prova di Laboratorio del 28/05/2009
Esercizio: K stringhe piu frequenti
Scrivere un programma che legga da tastiera due interiN eK e una sequenza
di N stringhe e che stampi le K stringhe piu frequenti in essa contenute, in
ordine lessicografico.
Si puo assumere che:
• non esistano due stringhe con la stessa frequenza;
• il valore di K sia minore o uguale al numero di stringhe distinte;
• le stringhe contengono soltanto caratteri alfanumerici (a� z minuscoli
e maiuscoli o numeri, nessuno spazio o punteggiatura) e sono lunghe
al piu 100 caratteri ciascuna.
L’input e formattato nel seguente modo: la prima riga contiene il numero Ndi stringhe da leggere, mentre la seconda riga contiene l’intero K. Seguono
N righe contenenti una stringa ciascuna.
L’output deve contenere solo e soltanto le K stringhe piu frequenti,
ordinate lessicograficamente, stampate una per riga.
Esempio
Input
6
2
minnie
pluto
paperino
pluto
paperino
pluto
Output
paperino
pluto
1
![Page 3: DidaWiki [DidaWiki] - Lezione 8 Listedidawiki.cli.di.unipi.it/lib/exe/fetch.php/informatica/... · 2018-04-23 · Esercizio 1 Prova del 18/05/2009 Algoritmica - Prova di Laboratorio](https://reader031.vdocuments.net/reader031/viewer/2022041516/5e2b26dca63f2e4de2674ca5/html5/thumbnails/3.jpg)
Esercizio 1
typedef struct { char *stringa; int freq; } entry;
int cmpAlfa (const void *p1, const void *p2) { return strcmp( *(char **)p1, *(char **)p2 ); }
int cmpEntryAlfa(const void *p1, const void *p2) { return strcmp( ((entry *)p1)->stringa, ((entry *)p2)->stringa ); }
int cmpEntryFreq(const void *p1, const void *p2) { return ((entry *)p2)->freq - ((entry *)p1)->freq; }
![Page 4: DidaWiki [DidaWiki] - Lezione 8 Listedidawiki.cli.di.unipi.it/lib/exe/fetch.php/informatica/... · 2018-04-23 · Esercizio 1 Prova del 18/05/2009 Algoritmica - Prova di Laboratorio](https://reader031.vdocuments.net/reader031/viewer/2022041516/5e2b26dca63f2e4de2674ca5/html5/thumbnails/4.jpg)
Esercizio 1
int main(void) { int n, k, i, j; char **stringhe; entry *aggregate; stringhe = leggi(&n, &k); aggregate = (entry *)malloc(sizeof(entry) * n); qsort ( stringhe, n, sizeof(char *), cmpAlfa ); j = -1; for ( i = 0; i < n; i++ ) { if ( j >= 0 && !strcmp(aggregate[j].stringa, stringhe[i] ) ) aggregate[j].freq++; else { j++; aggregate[j].stringa = stringhe[i]; aggregate[j].freq = 1; } }
![Page 5: DidaWiki [DidaWiki] - Lezione 8 Listedidawiki.cli.di.unipi.it/lib/exe/fetch.php/informatica/... · 2018-04-23 · Esercizio 1 Prova del 18/05/2009 Algoritmica - Prova di Laboratorio](https://reader031.vdocuments.net/reader031/viewer/2022041516/5e2b26dca63f2e4de2674ca5/html5/thumbnails/5.jpg)
Esercizio 1
qsort ( aggregate, j+1, sizeof(entry), cmpEntryFreq );
qsort ( aggregate, k, sizeof(entry), cmpEntryAlfa );
for ( i = 0; i < k; i++ ) printf("%s\n", aggregate[i].stringa);
return 0;
}
![Page 6: DidaWiki [DidaWiki] - Lezione 8 Listedidawiki.cli.di.unipi.it/lib/exe/fetch.php/informatica/... · 2018-04-23 · Esercizio 1 Prova del 18/05/2009 Algoritmica - Prova di Laboratorio](https://reader031.vdocuments.net/reader031/viewer/2022041516/5e2b26dca63f2e4de2674ca5/html5/thumbnails/6.jpg)
Liste
![Page 7: DidaWiki [DidaWiki] - Lezione 8 Listedidawiki.cli.di.unipi.it/lib/exe/fetch.php/informatica/... · 2018-04-23 · Esercizio 1 Prova del 18/05/2009 Algoritmica - Prova di Laboratorio](https://reader031.vdocuments.net/reader031/viewer/2022041516/5e2b26dca63f2e4de2674ca5/html5/thumbnails/7.jpg)
ListeListe monodirezionali
![Page 8: DidaWiki [DidaWiki] - Lezione 8 Listedidawiki.cli.di.unipi.it/lib/exe/fetch.php/informatica/... · 2018-04-23 · Esercizio 1 Prova del 18/05/2009 Algoritmica - Prova di Laboratorio](https://reader031.vdocuments.net/reader031/viewer/2022041516/5e2b26dca63f2e4de2674ca5/html5/thumbnails/8.jpg)
Liste10 22
Liste monodirezionali
13 /
![Page 9: DidaWiki [DidaWiki] - Lezione 8 Listedidawiki.cli.di.unipi.it/lib/exe/fetch.php/informatica/... · 2018-04-23 · Esercizio 1 Prova del 18/05/2009 Algoritmica - Prova di Laboratorio](https://reader031.vdocuments.net/reader031/viewer/2022041516/5e2b26dca63f2e4de2674ca5/html5/thumbnails/9.jpg)
Liste10 22
Liste monodirezionali
13 /head
![Page 10: DidaWiki [DidaWiki] - Lezione 8 Listedidawiki.cli.di.unipi.it/lib/exe/fetch.php/informatica/... · 2018-04-23 · Esercizio 1 Prova del 18/05/2009 Algoritmica - Prova di Laboratorio](https://reader031.vdocuments.net/reader031/viewer/2022041516/5e2b26dca63f2e4de2674ca5/html5/thumbnails/10.jpg)
Liste10 22
Liste monodirezionali
13 /
typedef struct _elem { int key; struct _elem *next; } elem;
head
![Page 11: DidaWiki [DidaWiki] - Lezione 8 Listedidawiki.cli.di.unipi.it/lib/exe/fetch.php/informatica/... · 2018-04-23 · Esercizio 1 Prova del 18/05/2009 Algoritmica - Prova di Laboratorio](https://reader031.vdocuments.net/reader031/viewer/2022041516/5e2b26dca63f2e4de2674ca5/html5/thumbnails/11.jpg)
Liste10 22
Liste monodirezionali
Liste bidirezionali
13 /
typedef struct _elem { int key; struct _elem *next; } elem;
head
![Page 12: DidaWiki [DidaWiki] - Lezione 8 Listedidawiki.cli.di.unipi.it/lib/exe/fetch.php/informatica/... · 2018-04-23 · Esercizio 1 Prova del 18/05/2009 Algoritmica - Prova di Laboratorio](https://reader031.vdocuments.net/reader031/viewer/2022041516/5e2b26dca63f2e4de2674ca5/html5/thumbnails/12.jpg)
Liste10 22
Liste monodirezionali
Liste bidirezionali
13 /
10 / 22 13 /
typedef struct _elem { int key; struct _elem *next; } elem;
head
![Page 13: DidaWiki [DidaWiki] - Lezione 8 Listedidawiki.cli.di.unipi.it/lib/exe/fetch.php/informatica/... · 2018-04-23 · Esercizio 1 Prova del 18/05/2009 Algoritmica - Prova di Laboratorio](https://reader031.vdocuments.net/reader031/viewer/2022041516/5e2b26dca63f2e4de2674ca5/html5/thumbnails/13.jpg)
Liste10 22
Liste monodirezionali
Liste bidirezionali
13 /
10 / 22 13 /
head
typedef struct _elem { int key; struct _elem *next; } elem;
head
![Page 14: DidaWiki [DidaWiki] - Lezione 8 Listedidawiki.cli.di.unipi.it/lib/exe/fetch.php/informatica/... · 2018-04-23 · Esercizio 1 Prova del 18/05/2009 Algoritmica - Prova di Laboratorio](https://reader031.vdocuments.net/reader031/viewer/2022041516/5e2b26dca63f2e4de2674ca5/html5/thumbnails/14.jpg)
Liste10 22
Liste monodirezionali
Liste bidirezionali
typedef struct _elem { int key; struct _elem *prev; struct _elem *next; } elem;
13 /
10 / 22 13 /
head
typedef struct _elem { int key; struct _elem *next; } elem;
head
![Page 15: DidaWiki [DidaWiki] - Lezione 8 Listedidawiki.cli.di.unipi.it/lib/exe/fetch.php/informatica/... · 2018-04-23 · Esercizio 1 Prova del 18/05/2009 Algoritmica - Prova di Laboratorio](https://reader031.vdocuments.net/reader031/viewer/2022041516/5e2b26dca63f2e4de2674ca5/html5/thumbnails/15.jpg)
head
Inserimento in testa10 22 13
Liste monodirezionali
/
![Page 16: DidaWiki [DidaWiki] - Lezione 8 Listedidawiki.cli.di.unipi.it/lib/exe/fetch.php/informatica/... · 2018-04-23 · Esercizio 1 Prova del 18/05/2009 Algoritmica - Prova di Laboratorio](https://reader031.vdocuments.net/reader031/viewer/2022041516/5e2b26dca63f2e4de2674ca5/html5/thumbnails/16.jpg)
head
Inserimento in testa10 22 13
Liste monodirezionali
elem* inserisceTesta(elem *head, int key) { elem *nuovo = (elem *) malloc(sizeof(elem)); nuovo->key = key;
/
![Page 17: DidaWiki [DidaWiki] - Lezione 8 Listedidawiki.cli.di.unipi.it/lib/exe/fetch.php/informatica/... · 2018-04-23 · Esercizio 1 Prova del 18/05/2009 Algoritmica - Prova di Laboratorio](https://reader031.vdocuments.net/reader031/viewer/2022041516/5e2b26dca63f2e4de2674ca5/html5/thumbnails/17.jpg)
head
Inserimento in testa10 22 13
Liste monodirezionali
elem* inserisceTesta(elem *head, int key) { elem *nuovo = (elem *) malloc(sizeof(elem)); nuovo->key = key;
2
/
![Page 18: DidaWiki [DidaWiki] - Lezione 8 Listedidawiki.cli.di.unipi.it/lib/exe/fetch.php/informatica/... · 2018-04-23 · Esercizio 1 Prova del 18/05/2009 Algoritmica - Prova di Laboratorio](https://reader031.vdocuments.net/reader031/viewer/2022041516/5e2b26dca63f2e4de2674ca5/html5/thumbnails/18.jpg)
head
Inserimento in testa10 22 13
Liste monodirezionali
elem* inserisceTesta(elem *head, int key) { elem *nuovo = (elem *) malloc(sizeof(elem)); nuovo->key = key; nuovo->next = head; // NULL se la lista è vuota
2
/
![Page 19: DidaWiki [DidaWiki] - Lezione 8 Listedidawiki.cli.di.unipi.it/lib/exe/fetch.php/informatica/... · 2018-04-23 · Esercizio 1 Prova del 18/05/2009 Algoritmica - Prova di Laboratorio](https://reader031.vdocuments.net/reader031/viewer/2022041516/5e2b26dca63f2e4de2674ca5/html5/thumbnails/19.jpg)
head
Inserimento in testa10 22 13
Liste monodirezionali
elem* inserisceTesta(elem *head, int key) { elem *nuovo = (elem *) malloc(sizeof(elem)); nuovo->key = key; nuovo->next = head; // NULL se la lista è vuota
2
/
![Page 20: DidaWiki [DidaWiki] - Lezione 8 Listedidawiki.cli.di.unipi.it/lib/exe/fetch.php/informatica/... · 2018-04-23 · Esercizio 1 Prova del 18/05/2009 Algoritmica - Prova di Laboratorio](https://reader031.vdocuments.net/reader031/viewer/2022041516/5e2b26dca63f2e4de2674ca5/html5/thumbnails/20.jpg)
head
Inserimento in testa10 22 13
Liste monodirezionali
elem* inserisceTesta(elem *head, int key) { elem *nuovo = (elem *) malloc(sizeof(elem)); nuovo->key = key; nuovo->next = head; // NULL se la lista è vuota return nuovo; }
2
/
![Page 21: DidaWiki [DidaWiki] - Lezione 8 Listedidawiki.cli.di.unipi.it/lib/exe/fetch.php/informatica/... · 2018-04-23 · Esercizio 1 Prova del 18/05/2009 Algoritmica - Prova di Laboratorio](https://reader031.vdocuments.net/reader031/viewer/2022041516/5e2b26dca63f2e4de2674ca5/html5/thumbnails/21.jpg)
head
Inserimento in testa10 22 13
Liste monodirezionali
elem* inserisceTesta(elem *head, int key) { elem *nuovo = (elem *) malloc(sizeof(elem)); nuovo->key = key; nuovo->next = head; // NULL se la lista è vuota return nuovo; }
… elem* head = NULL; head = InserisciTesta(head, 2);
2
/
![Page 22: DidaWiki [DidaWiki] - Lezione 8 Listedidawiki.cli.di.unipi.it/lib/exe/fetch.php/informatica/... · 2018-04-23 · Esercizio 1 Prova del 18/05/2009 Algoritmica - Prova di Laboratorio](https://reader031.vdocuments.net/reader031/viewer/2022041516/5e2b26dca63f2e4de2674ca5/html5/thumbnails/22.jpg)
head
Inserimento in testa10 22 13
Liste monodirezionali
elem* inserisceTesta(elem *head, int key) { elem *nuovo = (elem *) malloc(sizeof(elem)); nuovo->key = key; nuovo->next = head; // NULL se la lista è vuota return nuovo; }
… elem* head = NULL; head = InserisciTesta(head, 2);
2
/
![Page 23: DidaWiki [DidaWiki] - Lezione 8 Listedidawiki.cli.di.unipi.it/lib/exe/fetch.php/informatica/... · 2018-04-23 · Esercizio 1 Prova del 18/05/2009 Algoritmica - Prova di Laboratorio](https://reader031.vdocuments.net/reader031/viewer/2022041516/5e2b26dca63f2e4de2674ca5/html5/thumbnails/23.jpg)
head
Inserimento in testa10 22 13
Liste monodirezionali
elem* inserisceTesta(elem *head, int key) { elem *nuovo = (elem *) malloc(sizeof(elem)); nuovo->key = key; nuovo->next = head; // NULL se la lista è vuota return nuovo; }
… elem* head = NULL; head = InserisciTesta(head, 2);
2
/
![Page 24: DidaWiki [DidaWiki] - Lezione 8 Listedidawiki.cli.di.unipi.it/lib/exe/fetch.php/informatica/... · 2018-04-23 · Esercizio 1 Prova del 18/05/2009 Algoritmica - Prova di Laboratorio](https://reader031.vdocuments.net/reader031/viewer/2022041516/5e2b26dca63f2e4de2674ca5/html5/thumbnails/24.jpg)
Ricerca di un elemento
10 22 13Liste monodirezionali
/head
![Page 25: DidaWiki [DidaWiki] - Lezione 8 Listedidawiki.cli.di.unipi.it/lib/exe/fetch.php/informatica/... · 2018-04-23 · Esercizio 1 Prova del 18/05/2009 Algoritmica - Prova di Laboratorio](https://reader031.vdocuments.net/reader031/viewer/2022041516/5e2b26dca63f2e4de2674ca5/html5/thumbnails/25.jpg)
Ricerca di un elemento
10 22 13Liste monodirezionali
13?
/head
![Page 26: DidaWiki [DidaWiki] - Lezione 8 Listedidawiki.cli.di.unipi.it/lib/exe/fetch.php/informatica/... · 2018-04-23 · Esercizio 1 Prova del 18/05/2009 Algoritmica - Prova di Laboratorio](https://reader031.vdocuments.net/reader031/viewer/2022041516/5e2b26dca63f2e4de2674ca5/html5/thumbnails/26.jpg)
Ricerca di un elemento
10 22 13Liste monodirezionali
13?
/head
![Page 27: DidaWiki [DidaWiki] - Lezione 8 Listedidawiki.cli.di.unipi.it/lib/exe/fetch.php/informatica/... · 2018-04-23 · Esercizio 1 Prova del 18/05/2009 Algoritmica - Prova di Laboratorio](https://reader031.vdocuments.net/reader031/viewer/2022041516/5e2b26dca63f2e4de2674ca5/html5/thumbnails/27.jpg)
Ricerca di un elemento
10 22 13Liste monodirezionali
13?
/head
![Page 28: DidaWiki [DidaWiki] - Lezione 8 Listedidawiki.cli.di.unipi.it/lib/exe/fetch.php/informatica/... · 2018-04-23 · Esercizio 1 Prova del 18/05/2009 Algoritmica - Prova di Laboratorio](https://reader031.vdocuments.net/reader031/viewer/2022041516/5e2b26dca63f2e4de2674ca5/html5/thumbnails/28.jpg)
Ricerca di un elemento
10 22 13Liste monodirezionali
int trovaChiave(elem *head, int key) { int i = 0; while(head != NULL) { if(head->key == key) return i; i++; head = head->next; } return -1; }
13?
/head
![Page 29: DidaWiki [DidaWiki] - Lezione 8 Listedidawiki.cli.di.unipi.it/lib/exe/fetch.php/informatica/... · 2018-04-23 · Esercizio 1 Prova del 18/05/2009 Algoritmica - Prova di Laboratorio](https://reader031.vdocuments.net/reader031/viewer/2022041516/5e2b26dca63f2e4de2674ca5/html5/thumbnails/29.jpg)
Lunghezza di una lista10 22 13
Liste monodirezionali
/head
![Page 30: DidaWiki [DidaWiki] - Lezione 8 Listedidawiki.cli.di.unipi.it/lib/exe/fetch.php/informatica/... · 2018-04-23 · Esercizio 1 Prova del 18/05/2009 Algoritmica - Prova di Laboratorio](https://reader031.vdocuments.net/reader031/viewer/2022041516/5e2b26dca63f2e4de2674ca5/html5/thumbnails/30.jpg)
Lunghezza di una lista10 22 13
Liste monodirezionali
int lunghezzaLista(elem *head){ if(head == NULL) return 0; else return 1+lunghezzaLista(head->next); }
/head
![Page 31: DidaWiki [DidaWiki] - Lezione 8 Listedidawiki.cli.di.unipi.it/lib/exe/fetch.php/informatica/... · 2018-04-23 · Esercizio 1 Prova del 18/05/2009 Algoritmica - Prova di Laboratorio](https://reader031.vdocuments.net/reader031/viewer/2022041516/5e2b26dca63f2e4de2674ca5/html5/thumbnails/31.jpg)
Esercizio 1 Lista monodirezionale
Lista monodirezionale
Esercizio
Scrivere un programma che legga da tastiera una sequenza di n interi e li
inserisca in una lista nell’ordine di immissione. La lista deve essere mono-direzionale.Il programma deve stampare il contenuto della lista percorrendola in ordine
inverso.
La prima riga dell’input contiene la lunghezza n (non limitata) della lista.
Le righe successive contengono gli interi che compongono la lista, uno per
riga.
L’output contiene la lista stampata al contrario, un elemento per riga.
Esempio
Input
10
1
2
3
4
5
6
7
8
9
10
Output
10
9
8
7
6
5
4
3
2
1
1
![Page 32: DidaWiki [DidaWiki] - Lezione 8 Listedidawiki.cli.di.unipi.it/lib/exe/fetch.php/informatica/... · 2018-04-23 · Esercizio 1 Prova del 18/05/2009 Algoritmica - Prova di Laboratorio](https://reader031.vdocuments.net/reader031/viewer/2022041516/5e2b26dca63f2e4de2674ca5/html5/thumbnails/32.jpg)
Esercizio 2 Lista bidirezionale
Lista bidirezionale
Esercizio
Scrivere un programma che legga da tastiera una sequenza di n interi e li
inserisca in una lista nell’ordine di immissione. La lista deve essere bidire-zionale.Il programma deve stampare il contenuto della lista percorrendola in ordine
inverso.
La prima riga dell’input contiene la lunghezza n (non limitata) della lista.
Le righe successive contengono gli interi che compongono la lista, uno per
riga.
L’output contiene la lista stampata al contrario, un elemento per riga.
Esempio
Input
10
1
2
3
4
5
6
7
8
9
10
Output
10
9
8
7
6
5
4
3
2
1
1
![Page 33: DidaWiki [DidaWiki] - Lezione 8 Listedidawiki.cli.di.unipi.it/lib/exe/fetch.php/informatica/... · 2018-04-23 · Esercizio 1 Prova del 18/05/2009 Algoritmica - Prova di Laboratorio](https://reader031.vdocuments.net/reader031/viewer/2022041516/5e2b26dca63f2e4de2674ca5/html5/thumbnails/33.jpg)
Esercizio 3 Move-to-Front
Move-to-Front
Esercizio
Scrivere un programma che legga da tastiera una sequenza di n interi distin-ti e li inserisca in una lista monodirezionale (nell’ordine dato). Il programma
entra poi in un ciclo nel quale legge un intero i da tastiera e lo cerca nella
lista. Se i si trova nella lista stampa la sua posizione (contando da 0) e porta
l’elemento in testa alla lista (MTF), altrimenti stampa -1 e termina.
L’input e formattato come segue:
• la prima riga contiene la lunghezza n (non limitata) della sequenza;
• le successive n righe contengono gli interi che compongono la sequenza,
uno per riga;
• segue una sequenza di interi da cercare nella lista (uno per riga), di
lunghezza non nota a priori, terminata da un numero non presente
nella lista.
L’output contiene:
• le posizioni degli elementi trovati nella lista (si assume che il primo
elemento sia in posizione 0), una posizione per riga;
• -1 se e stato dato in input un numero che non e nella lista, e in tal
caso si termina.
Esempio
Input
3 // 3 interi
1
2
3 // [1 ,2 ,3]
2 // [1 ,2 ,3] output: 1 lista: [2, 1, 3]
2 // [2, 1, 3] output: 0 lista: [2, 1, 3]
3 // [2, 1, 3] output: 2 lista: [3, 2, 1]
4 // [3, 2, 1] output: -1 lista: [3, 2, 1]
1
![Page 34: DidaWiki [DidaWiki] - Lezione 8 Listedidawiki.cli.di.unipi.it/lib/exe/fetch.php/informatica/... · 2018-04-23 · Esercizio 1 Prova del 18/05/2009 Algoritmica - Prova di Laboratorio](https://reader031.vdocuments.net/reader031/viewer/2022041516/5e2b26dca63f2e4de2674ca5/html5/thumbnails/34.jpg)
Esercizio 4 Lista bidirezionale e conteggio
Lista bidirezionale e conteggio
Esercizio
Scrivere un programma che legga da tastiera una sequenza di n interi ordi-nati e li inserisca in una lista bidirezionale. Il programma entra poi in unciclo nel quale legge un intero i da tastiera e lo cerca nella lista. Se i si trovanella lista, stampa la sua posizione (contando da 0), altrimenti stampa -1.
Ogni elemento della lista mantiene anche un contatore che ricorda quan-te volte e stata cercata la corrispondente chiave. Tutti i contatori sonoinizialmente settati a 0. Dopo ogni ricerca si deve garantire che gli elementidella lista siano ordinati in ordine non-crescente di contatore. Se il contato-re di un elemento viene incrementato e risulta uguale a quello dell’elementoprecedente, i due elementi vanno lasciati nelle loro posizioni.
NOTA: non si devono utilizzare algoritmi di ordinamento, ma osservareche inizialmente la lista e ordinata e che dopo ogni ricerca solo un contatoreviene incrementato.
L’input e formattato come segue:
• la prima riga contiene la lunghezza n (non limitata) della lista;
• le successive n righe contengono gli interi che compongono la lista, inordine, uno per riga;
• segue una lista di interi da cercare nella lista (uno per riga), di lun-ghezza non nota a priori, terminata da un numero non presente nellalista.
L’output contiene:
• le posizioni degli elementi trovati nella lista (si assume che il primoelemento sia in posizione 0), una posizione per riga; gli elementi devonoessere mantenuti ordinati in ordine non-crescente di contatore;
• -1 se e stato dato in input un numero che non e nella lista, e in talcaso si termina.
1
![Page 35: DidaWiki [DidaWiki] - Lezione 8 Listedidawiki.cli.di.unipi.it/lib/exe/fetch.php/informatica/... · 2018-04-23 · Esercizio 1 Prova del 18/05/2009 Algoritmica - Prova di Laboratorio](https://reader031.vdocuments.net/reader031/viewer/2022041516/5e2b26dca63f2e4de2674ca5/html5/thumbnails/35.jpg)
Puzzle
Puzzle17 Aprile 2013
Puzzled
Ciclo in una lista
Interview di Google
Data una lista L, progettare un algoritmo che in tempo O(n) e spazio ag-
giuntivo costante sia in grado di stabilire se L contiene un ciclo.
1