Sei sulla pagina 1di 8

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 dellelemento n nella lista; Calcolo della lunghezza della lista; Calcolo della somma degli interi; Estrapolazione di una sotto-lista, dalla posizione k alla fine.

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 dellelemento 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 Ricerca dellelemento n nella lista; R Calcolo della lunghezza della lista; R+IT Calcolo della somma degli interi; Estrapolazione di una sotto-lista, dalla posizione k alla fine. R+IT

Ricorsive o ITerative?

Esercizio
Lista.h main.c lista.c

Come definire due funzioni che fanno la stessa cosa in C ma in modi diversi??

Esercizio
Lista.h main.c lista.c

Banalmente usando un nome di funzione diverso (member, member_r) Altro modo?

Esercizio
Lista.h #define RECURSIVE

main.c

lista.c
#ifndef RECURSIVE // . . . #endif #ifdef RECURSIVE // . . . #endif

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; node *next; } listNode; typedef listNode* list;

list cons(int n, list l); list consTail(int n, list l); int sumlist(list l);
void showlist(list l); //R+IT int length(list l); //R+IT int member(int n, list l); //R+IT list sublist(int k, list l); //R+IT

Esercizio

Interfaccia void* malloc (size_t size); Esempio di utilizzo type *x=(type*)malloc(sizeof(type) * N); //(N=1..+inf)