Stack is one of the Linear data structure (Non-primitive data structure).  In stack, Insert Operation & delete Operation are performed at one end i.e. on the top of the stack.

Stack is the linear data structure having collection of elements which follows LIFO (Last In First Out) pattern i.e. element which comes last is served first.

One of the best applications where stack can be viewed is, Shipment in Cargo. For the shipment of goods, they have to be loaded into a cargo. While for unloading they are unloaded  in opposite sequence of  loading. That is, the last goods loaded should be unloaded first.

In stack Insert operation is known as PUSH and deletion is known as POP and the position of the stack where these operations are performed is known as TOP of the stack.
Operations on STACK :
Basic operations required to manipulate a stack are:
PUSH : To insert an item into the stack
POP : To remove an item from a stack.
PEEP : To find ith element from stack.
CHANGE : To change ith element from stack.

Initially top of the stack is zero as there is no element in stack, top is incremented by one as element is added to stack i.e. PUSH Operation and top is decremented by one when element is deleted from stack i.e. POP operation.

Application of Stack :
1. Recursion
2. Polish expressions and their compilation
3. Stack machines

Let us see Pseudo code or Algorithm of each stack operation.

 PUSH Operation PUSH (S, TOP, X) Step – 1: [Check for Stack overflow] If TOP > N then Write (‘Stack Overflow’) Return Step – 2 : [Increase value of TOP] TOP <- TOP + 1 Step – 3 : [Insert element into stack] S[Top] <- X Step – 4: [Finished] Return POP Operation POP(S, TOP) Step – 1: [Check for Stack Underflow] If TOP == 0 then Write (‘Stack Underflow’) Return Step – 2 : [Decrease value of TOP] TOP <- TOP – 1 Step – 3 : [Return top element of stack] Return S[Top + 1] PEEP Operation PEEP(S, TOP, i) Step – 1: [Check for Stack Underflow] If TOP- i +1 < 0 then Write (‘Stack Underflow For PEEP’) Return Step – 2 : [Return ith element from top of stack] Return S [Top – i + 1] CHANGE Operation Change(S, TOP, i, X) Step – 1: [Check for Stack Underflow] If TOP- i +1 < 0 then Write (‘Stack Underflow on Change’) Return Step – 2 : [Change ith element from top of stack] S[Top – i + 1] <- X Step – 3 : [Finished] Return