Buongiorno,
siccome intuisco che la domanda sia molto vaga, posto un esempio trovato sulle dispense che ho:
/* Dato un intero n>0, costruisce la lista di nodi da 1 ad n */
node* buildlis_n (int n)
{
node *p, *lis;
lis=NULL;
while (n>0)
/* Invariante: lis e' la lista dei nodi contenenti i, 0<n<i<n,
ove con n si denota il valore di input del parametro "n", e con n il suo valore ad un dato passo del ciclo */
{
p=newnode();
p->data=n;
p->next=lis;
lis=p;
n--;
}
return(lis);
}
Complessita': O(n)
Non capisco quale sia il ragionamento di base per capire / determinare quale sia l'invariante; grazie per qualsiasi informazione a commento della mia richiesta.
Saluti