The ADT stack has the following operations:
- push(k, S): push a new object k to the top of the stack S
- pop(S): remove and return the top element of the stack S
- top(S): get the top element of the stack S without deleting it