Stack
Stack
Contents
ADT Stack and its operations: Algorithms and their complexity analysis
Applications of Stacks: Expression Conversion and evaluation –
corresponding algorithms and complexity analysis.
ADT queue
Types of Queue: Simple Queue, Circular Queue, Priority Queue;
Operations on each types of Queues: Algorithms and their analysis.
ADT Stack
The abstract datatype is special kind of datatype, whose behavior is defined
by a set of values and set of operations.
The keyword “Abstract” is used as we can use these datatypes, we can
perform different operations. But how those operations are working that is
totally hidden from the user.
The ADT is made of with primitive datatypes, but operation logics are
hidden.
Contd….
A Stack is a linear data structure that follows the LIFO (Last-In-First-
Out) principle.
Stack has one end, whereas the Queue has two ends (front and rear).
It contains only one pointer top pointer pointing to the topmost element
of the stack.
Whenever an element is added in the stack, it is added on the top of the
stack, and the element can be deleted only from the stack.
a stack can be defined as a container in
In other words,
which insertion and deletion can be done from the one
end known as the top of the stack.
Some key points related to stack
It is called as stack because it behaves like a real-world stack,
piles of books, etc.
A Stack is an abstract data type with a pre-defined capacity,
which means that it can store the elements of a limited size.
It is a data structure that follows some order to insert and delete
the elements, and that order can be LIFO or FILO.
Working of Stack:-
Stack works on the LIFO pattern.
Suppose we want to store the elements in a stack and let's assume
that stack is empty. We have taken the stack of size 5 as shown
below in which we are pushing the elements one by one until the
stack becomes full.
Since our stack is full as the size of the stack is 5.
In the above cases, we can observe that it goes from the top to the bottom
when we were entering the new element in the stack. The stack gets filled
up from the bottom to the top.
When we perform the delete operation on the stack, there is only one
way for entry and exit as the other end is closed.
It follows the LIFO pattern, which means that the value entered first will
be removed last. In the above case, the value 5 is entered first, so it will
be removed only after the deletion of all the other elements.
ADT Stack Operations
The following are some common operations implemented on the stack:
push(): When we insert an element in a stack then the operation is known as a push. If the
stack is full then the overflow condition occurs.
pop(): When we delete an element from the stack, the operation is known as a pop. If the
stack is empty means that no element exists in the stack, this state is known as an
underflow state.
isEmpty(): It determines whether the stack is empty or not.
isFull(): It determines whether the stack is full or not.'
peek(): It returns the element at the given position.
count(): It returns the total number of elements available in a stack.
change(): It changes the element at the given position.
display(): It prints all the elements available in the stack.
PUSH Operation
The steps involved in the PUSH operation is given below:
Before inserting an element in a stack, we check whether the stack is full.
If we try to insert the element in a stack, and the stack is full, then
the overflow condition occurs.
When we initialize a stack, we set the value of top as -1 to check that the
stack is empty.
When the new element is pushed in a stack, first, the value of the top gets
incremented, i.e., top=top+1, and the element will be placed at the new
position of the top.
The elements will be inserted until we reach the max size of the stack.
POP Operation
The steps involved in the POP operation is given below:
Before deleting the element from the stack, we check whether the stack is
empty.
If we try to delete the element from the empty stack, then
the underflow condition occurs.
If the stack is not empty, we first access the element which is pointed by
the top
Once the pop operation is performed, the top is decremented by 1,
i.e., top=top-1.
Implementation/Representation of
Stack
Array
Linked List
Array Representation of Stack
In array implementation, the stack is formed by using the
array.
All the operations regarding the stack are performed using
arrays.
Lets see how each operation can be implemented on the
stack using array data structure.
Adding an element onto the stack (push operation)
2. Add element at the position of incremented top. This is referred to as adding new
element at the top of the stack.
4. Return.
1 2 3 4 5 6
7 8
TOP MAXSTK
4. Return.
Example:-
Consider the stack
1 2 3 4 5
6 7 8
TOP
MAXSTK
3. Return ITEM.
Highest: Exponential ^
Next Highest :Multiplication *and division /
Lowest:Addition + and subtraction -
Important Note
- (+(- ABC*
( (+(-( ABC*
D (+(-( ABC*D
/ (+(-(/ ABC*D
E (+(-(/ ABC*DE
^ (+(-(/^ ABC*DE
F (+(-(/^ ABC*DEF
) (+(- ABC*DEF^/
* (+(-* ABC*DEF^/
G (+(-* ABC*DEF^/G
) (+ ABC*DEF^/G*-
* (+* ABC*DEF^/G*-
H (+* ABC*DEF^/G*-H
) ABC*DEF^/G*-H*+
Practice Questions
1. P:12,7,3,-,/,2,1,5,+,*,+
Ans:15
2. ((A+B)*D)^(E-F)
Ans: AB+D*EF-^