Linked list stack implementation
In the pop and the print function, the new node seems unnecessary, since the next line modifies the pointer to point to the top. It could be simply

node *n = top;

The delete n; also looks superfluous in the print since n will always be NULL there.
If I'm right making top as static or global would result that you can't have more than one stack in an application. Linked lists usually have two classes: one is a Node which stores a reference to the next node and the data, and the second is a LinkedList class which stores the head and the implementation of the push, pop, etc. methods. You can see an example in this answer.
Take care of the boundary cases. Calling pop on an empty stack gives a segmentation fault error. I suppose that's not the best error handling method :)