5. Dovremo sempre avere modo di recuperare il primo elemento dello stack: chiameremo s la variabile (di tipo puntatore) che punta all'elemento attualmente in cima allo stack;
6. La struttura typedef struct Stack { int info; Stack *next; } //useremo due variabili, s & t Stack *s, *t;
7. Inizializzazione L'inizializzazione risulta piuttosto semplice: basta assegnare alla variabile s il valore NULL. Null è una costante predefinita del C/C++ che segnala un puntatore che non punta a... nulla, appunto. Come tale è molto utilizzata nei controlli. All'inizio il nostro stack è vuoto, quindi: s = null;
8. Inserimento di un elemento (PUSH) Per inserire un valore nello stack, dapprima creiamo un nuovo elemento in una variabile di appoggio, poi questo nuovo elemento diverrà il nuovo elemento “più in alto dello stack”. Dopo aver inserito l'informazione, lo agganceremo allo stack;
9. Il codice //creo nuovo elemento t= (stack *)malloc(sizeof(stack)); //inserisco valore (in questo caso 63) t->dato=83; //aggancio il nuovo elemento t->succ=s; //aggiorno s, che punta al nuovo “primo” elemento s=t;
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21. Per prima cosa preleviamo il dato (dopo aver controllato se lo stack non è vuoto) e lo assegnamo a una variabile (la useremo nel main)
25. Il codice //recupero dato out=s->dato //salvo il puntatore al dato da eliminare t=s; //lo stack passa all'elemento successivo s=s->succ; //libero la memoria free(t);
26.
27.
28.
29.
30.
31.
32. Non permette di “osservare” il dato nello stack senza toglierlo
33. Non è compatibile con l'interfaccia che abbiamo definito in precedenza