# Part 3: Stack, Queue

Stack and Queue are the essential part of programming that we also need to understand. In fact, these methods are based on Array class.

Stack is an Abstract Data Type (ADT) which is is an abstraction of a data structure. It is Last-In, First-Out (LIFO) data structure. In the other words, the first element which is put on the top of the stack will be the last removed element in stack.

In Stack Operation:

• push() − add element on the top of the stack
• pop() − remove the uppermost element in stack
• peek() − return the last element that was put into stack without removing it
• is_empty() − check whether stack is empty or not
`// Stack Examples = list()       // set s to be an empty stacks.push(3)        // s is now [3]s.push(6)        // s is now [3, 6]s.pop()          // s is now [3]s.is_empty()     // return Falses.pop()          // s is now []`

Queue is a Linear Data Structure which is quite similar to stack (however, it doesn’t). It is First-In, First-Out (FIFO) data structure. In the other words, the first element that is added into the queue will also be the first element that will be removed out of the queue too.

In Queue Operation:

• enqueue() − add the element into queue
• dequeue() − remove the first element of queue
• peek() − check the first element of the queue
• is_empty() − check whether queue is empty or not
`// Queue Exampleq = list()          // set s to be an empty stackq.enqueue(3)        // s is now [3]q.enqueue(6)        // s is now [3, 6]q.dequeue()         // s is now [6]q.dequeue()         // s is now []q.is_empty()        // return True`

Conclusion

Both methods are based on array class which stack is LIFO that first added element will be the last removed element, and queue is FIFO that first added element will also be the first removed element.