Ho difficoltà a comprendere cosa fanno i puntatori nella seconda funzione cancellaLibriCostosi.
In paricolare:
-perchè in entrambe le funzioni scrive (Lista...) nel passaggio dei parametri?
-nella seconda usa (Lista*...) non capisco se è una dichiarazione o un passaggio di parametri, ani passaggio di puntatore
-perchè nella funzione cancellaLibriCostosi usa sempre i puntatori e invece nella prima funzione no?
-se nel passaggio di parametri della seconda funzione tiro via l'*, posso tirarlo via ovunque all'interno del corpo della funzione?
Grazie
Daniele
codice:
typedef
{
char titolo[100];
char autore [50];
float prezzo;
char prestito[50];
} Tipoinfo;
typedef struct nodo
{
tipoinfo info;
struct nodo* next;
} Nodo;
typedef Nodo* Lista;
int contaPrestiti(Lista testa) //funzione per contare num libri in prestito
{
int n=0;
Nodo* curr=testa;
while (curr!=NULL)
{
if (curr->info.prestito==VERO)
{
n++;
}
curr=curr->next;
}
return n;
}
void cancellaLibriCostosi (Lista* testa) //funzione cancella libri prezzo>100
{
if(*testa!=NULL)
{
if((*testa)->info.prezzo>100)
{
Nodo* temp=*testa;
*testa=(*testa)->next;
free(temp);
cancellaLibriCostosi (testa);
}
else
cancellaLibriCostosi(&((*testa)->next));
}
}