Esercizio Si legga una sequenza di numeri interi da tastiera (terminatore: 0), quindi: Creare lista...
-
Upload
gemma-gentile -
Category
Documents
-
view
212 -
download
0
Transcript of Esercizio Si legga una sequenza di numeri interi da tastiera (terminatore: 0), quindi: Creare lista...
Esercizio
Si legga una sequenza di numeri interi da tastiera (terminatore: 0), quindi:• Creare lista L1 con inserimento in testa; cons• Creare lista L2 con inserimento in coda; cons_tail• Stampa delle due liste; showlist• Ricerca dell’elemento n nella lista; member • Calcolo della lunghezza della lista; length• Calcolo della somma degli interi; sumlist• Estrapolazione di una sotto-lista, dalla posizione k alla fine. sublist
Esercizio
Si legga una sequenza di numeri interi da tastiera (terminatore: 0), quindi:• Creare lista L1 con inserimento in testa;• Creare lista L2 con inserimento in coda;• Stampa delle due liste;• Ricerca dell’elemento n nella lista;• Calcolo della lunghezza della lista;• Calcolo della somma degli interi;• Estrapolazione di una sotto-lista, dalla posizione k alla fine.
Ricorsive o ITerative?
Esercizio
Si legga una sequenza di numeri interi da tastiera (terminatore: 0), quindi:• Creare lista L1 con inserimento in testa;• Creare lista L2 con inserimento in coda;• Stampa delle due liste; R+IT• Ricerca dell’elemento n nella lista; R+IT• Calcolo della lunghezza della lista; R+IT• Calcolo della somma degli interi; R+IT• Estrapolazione di una sotto-lista, dalla posizione k alla fine. R+IT
Ricorsive o ITerative?
Esercizio
main.c lista.c
Lista.h
Come definire due funzioni che fanno la stessa cosa in C ma in modi diversi??
Esercizio
main.c lista.c
Lista.h
Banalmente usando un nome di funzione diverso (member, member_r)
Altro modo?
Esercizio
main.c
#ifndef RECURSIVE// Tutte le funzioni NON// ricorsive#endif
#ifdef RECURSIVE// Tutte le funzioni // ricorsive#endif
lista.c
Lista.h#define RECURSIVE
Banalmente usando un nome di funzione diverso (member, member_r)Meno banalmente: usando istruzioni al precompilatore (#ifdef, #ifndef)
Differenza??
Esercizio
Lista.h
#define RECURSIVE
typedef struct node{int n;struct node *next;
} listNode;typedef listNode* list;
list cons(int n, list l);list consTail(int n, list l);
int sumList(list l); //R+ITvoid showlist(list l); //R+ITint length(list l); //R+ITint member(int n, list l); //R+ITlist subList(int k, list l); //R+IT