Originariamente inviato da RoxLover
togliendolo mi dice
warning: assignment from incompatible pointer type
sempre alla stessa linea...
Non potrebbe mai funzionare quell'assegnazione perché nella function in cui si verifica l'errore "node" è un puntatore alla struttura "Node", mentre pop() restituisce

p1 + 1

ma la dichiarazione di p1 (che non capisco perché la fai globale) è

Tree *p1;

dove Tree (secondo la typedef che hai scritto) è già un tipo "puntatore alla struttura Node", quindi dichiarando p1 come puntatore ad un dato di tipo Tree, stai dicendo che p1 è un "puntatore a puntatore alla struttua Node", e quindi c'è un incongruenza tra i tipi del valore di ritorno di pop() e della variabile a cui lo vuoi assegnare (node).

Prova a fare semplicemente questa dichiarazione a posto dell'ultima

Node *p1;

oppure (dal momento che hai definito Tree)

Tree p1;

ovviamente fai attenzione che anche "tos" e "stack" sono dichiarati come puntatori a puntatori... e non so se questo può darti problemi perché non ho letto ancora tutto il codice.