La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

Laboratorio di Linguaggi lezione IX: tipi ricorsivi Marco Tarini Università dellInsubria Facoltà di Scienze Matematiche, Fisiche e Naturali di Varese Corso.

Presentazioni simili


Presentazione sul tema: "Laboratorio di Linguaggi lezione IX: tipi ricorsivi Marco Tarini Università dellInsubria Facoltà di Scienze Matematiche, Fisiche e Naturali di Varese Corso."— Transcript della presentazione:

1 Laboratorio di Linguaggi lezione IX: tipi ricorsivi Marco Tarini Università dellInsubria Facoltà di Scienze Matematiche, Fisiche e Naturali di Varese Corso di Laurea in Informatica Anno Accademico 2007/08

2 M a r c o T a r i n i - L a b o r a t o r i o d i L i n g u a g g i - 2 0 0 7 / 0 8 - U n i v e r s i t à d e l l I n s u b r i a Definizione tipi ricorsivi Definire tipi ricorsivi: typedef struct { char nome[20]; char cognome[20]; int peso; } Persona; Persona padre; Concettualmente sbagliato. Ricorsione infinita!

3 M a r c o T a r i n i - L a b o r a t o r i o d i L i n g u a g g i - 2 0 0 7 / 0 8 - U n i v e r s i t à d e l l I n s u b r i a Definizione tipi ricorsivi Definire tipi ricorsivi: typedef struct { char nome[20]; char cognome[20]; int peso; Persona* padre; } Persona; Concettualmente giusto. (l'ennesimo uso dei puntatori) Ma non compila perche' al momento della dichiarazione del campo padre il tipo Persona non esiste ancora.

4 M a r c o T a r i n i - L a b o r a t o r i o d i L i n g u a g g i - 2 0 0 7 / 0 8 - U n i v e r s i t à d e l l I n s u b r i a Definizione tipi ricorsivi Definire tipi ricorsivi: typedef struct P { char nome[20]; char cognome[20]; int peso; struct P *padre; } Persona; Persona a,b; a.padre = &b;

5 M a r c o T a r i n i - L a b o r a t o r i o d i L i n g u a g g i - 2 0 0 7 / 0 8 - U n i v e r s i t à d e l l I n s u b r i a Persona a,b; a.padre = &b; Definizione tipi ricorsivi Definire tipi ricorsivi: (modo alternativo) typedef struct Persona { char nome[20]; char cognome[20]; int peso; struct Persona *padre; }; struct Persona a,b; a.padre = &b;

6 M a r c o T a r i n i - L a b o r a t o r i o d i L i n g u a g g i - 2 0 0 7 / 0 8 - U n i v e r s i t à d e l l I n s u b r i a Liste Esempio: le liste typedef struct E { int data; struct E *next; } Elemento; typedef Elemento* pElemento; 1 5 / datanextdatanext

7 M a r c o T a r i n i - L a b o r a t o r i o d i L i n g u a g g i - 2 0 0 7 / 0 8 - U n i v e r s i t à d e l l I n s u b r i a Esempio: la lista di numeri ( 1, 5, 2 ) 5 2 / datanextdatanext 1 datanext start typedef struct E { int data; struct E *next; } Elemento; typedef Elemento* start;


Scaricare ppt "Laboratorio di Linguaggi lezione IX: tipi ricorsivi Marco Tarini Università dellInsubria Facoltà di Scienze Matematiche, Fisiche e Naturali di Varese Corso."

Presentazioni simili


Annunci Google