Test di autovalutazione 20  

Domanda 1 :

Avendo la  lista semplice L= (-1, 2, 4, 1, 25) quali sono i risultati restituiti dalle funzioni: Car(L); Cons(25,L); Cdr(L)?

 (2, 4, 1, 25);  (25, -1, 2, 4, 25);  -1;

 -1;  (-1, 2, 4, 1);  (2, 4, 1, 25);

 -1;  (25, -1, 2, 4, 25);  (2, 4, 1, 25);

 (2, 4, 1, 25);  25;  -1;

 

Domanda 2 :

Avendo la seguente definizione: 

struct lista {struct info

                    {char nome[10]; int eta;}; 

                   struct lista *next;};

struct lista *punt; 

con quale istruzione si assegna, al campo nome, la stringa "domanda 2".

  strcpy(punt->nome,"domanda 2");

  for(i=0;i<10) punt->nome[i]="domanda 2";

  punt.info.nome="domanda 2";

  strcpy(punt->info.nome,"domanda 2");

 

Domanda 3 :

Quale fra le dichiarazioni indicate e' corretta, per rappresentare il tipo astratto lista semplice con struct e puntatori?

  typedef char caratt; 

    struct lista{caratt dato; struct lista *succ;}tipo_lis;

 typedef int info; 

    struct lista{info dato; struct lista next;};

 typedef char caratt; 

    struct lista{caratt dato; lista *succ;};

 int caratt; 

    struct lista{caratt dato; struct lista *next;}tipo_lis;

 

Domanda 4 :

Ricordando le definizioni di lista semplice, della lezione 20, con struct e puntatori, quale fra le funzioni indicate esegue correttamente la cancellazione della lista?

 void Cancella_lista(Tipo_lista lis)
     {
     Tipo_lista punt_aux;
       while(*lis !=NULL)
         { punt_aux=*lis;
           *lis=(*lis)->next;
           free(punt_aux);}
      }

  void Cancella_lista(Tipo_lista *lis)
     {
     Tipo_lista punt_aux;
       while(*lis !=NULL)
         { *punt_aux=*lis;
           *lis=(*lis)->next;
           free(punt_aux); }
      }

 void Cancella_lista(Tipo_lista *lis)
     {
     Tipo_lista punt_aux;
       while(*lis !=NULL)
         { punt_aux=*lis;
           *lis=(*lis)->next;
           free(punt_aux); }
      }

 void Cancella_lista(Tipo_lista *lis)
     {
     Tipo_lista punt_aux;
       while(*lis !=NULL)
         { punt_aux=*lis;
           lis=lis->next;
           free(lis}
      }

 

Domanda 5 :

Il tipo astratto di dato lista semplice come e' definito?

 Una <D,O,C> dove: 1) D={List,atomo,booleano} con List=dominio di interesse; atomo dominio degli elementi che formano la lista; booleano sono le costanti TRUE e FALSE. 

2) O={Cons,Car,Cdr,Null} 

con Cons:atomoXList-->atomo; 

Car: List-->atomo; Cdr:List-->List; Null:atomoXList-->booleano; 3) C={lista_vuota}.

 Una <D,S,C> dove: 1) D={List,atomo,booleano} con List=dominio di interesse; atomo dominio degli elementi che formano la lista; booleano sono le costanti TRUE e FALSE. 

2) S={Cons,Car,Cdr,Null} 

con Cons:atomoXList-->List; 

Car: List-->atomo; Cdr:List-->List; 

Null:List-->booleano; 3) C={lista_vuota}.

 Una <D,S,C> dove: 1) D={List,atomo,booleano} con List=dominio di interesse; atomo codominio degli elementi che formano la lista; booleano sono le costanti TRUE e FALSE. 

2) S={Cons,Car,Cdr,Null} 

con Cons:List-->List; Car: List-->atomo; 

Cdr:List-->List; Null:List-->booleano; 

3) C={lista_vuota}.

 Una <D,O,C> dove: 1) D={List,atomo,booleano} con List=dominio di interesse; atomo dominio degli elementi che formano la lista; booleano sono le costanti TRUE e FALSE. 

2) O={Cons,Car,Null} 

con Cons:atomoXList-->List;

Car: List-->atomo;  Null:List-->booleano; 3) C={lista_vuota}.

 

Domanda  6 :

Quale fra le seguenti funzioni verifica in modo corretto, che la lista semplice, rappresentata tramite array, nella lezione 20, sia vuota?

  booleano Null(tipo_lista lista) {if(lista.length==-1) 

return(TRUE); else return(FALSE);} 

  booleano Null(tipo_lista lista) {if(lista.length==0) 

return(TRUE); else return(FALSE);}

  booleano Null(tipo_lista lista) {if(lista.length==0) 

return(FALSE); else return(TRUE);}

  booleano Null(tipo_lista *lista) {if(lista->length==-1) 

return(TRUE);else return(FALSE);}

 

Domanda  7 :

Avendo la seguente definizione: 

struct lista {char info;  

              struct lista *next;};

struct lista *punt; 

con la istruzione punt=malloc(sizeof(struct lista)); cosa si fa?

 si alloca memoria per un nodo della struttura lista e si assegna a punt l'indirizzo di memoria ove tale nodo e' allocato

 si alloca memoria per un nodo della struttura lista e si assegna a punt l'indirizzo di memoria ove il campo next di tale nodo e' allocato

  si alloca memoria per il campo info della struttura lista e si assegna a punt l'indirizzo di memoria ove tale campo e' allocato

 si alloca memoria per il puntatore alla lista punt, della struttura lista 

 

Domanda  8 :

Cosa abbiamo definito con la seguente:

struct nodo {char info;  

              struct nodo *ptr_next;};

 

una struttura di nome lista  contenente un campo info di tipo puntatore a carattere ed un campo di tipo puntatore.

una struttura , contenente un campo info di tipo carattere ed un campo di tipo puntatore che fa riferimento ad una struttura di tipo ptr_next.

  una struttura ricorsiva,  contenente un campo info di tipo carattere ed un campo di tipo puntatore, ptr_next, a carattere, che fa riferimento ad una struttura dello stesso tipo di quella in cui e' contenuto.

 una struttura ricorsiva,  contenente un campo info di tipo carattere ed un campo di tipo puntatore, ptr_next, che fa riferimento ad una struttura dello stesso tipo di quella in cui e' contenuto.

______________________________________________

                 Esito test :                  

 

                        

Risposte esatte su domande affrontate

______________________________________________

return to lesson 20

______________________________________________