KEMBAR78
STACK AND ITS OPERATIONS IN DATA STRUCTURES.pptx
A
Data Structure
 WHAT IS A STACK
 STACK OPERATIONS
 LIFOSTACK
 ANIMATION DEPICTING PUSH OPERATION
 ANIMATION DEPICTING POP OPERATION
 ARRAYIMPLEMENTATIONOF STACK
 APPLICATIONS OF STACK
CHECKING FOR BALANCEDBRACES
CONVERTING INFIX EXPRESSION TO POSTFIX
POSTFIX CALCULATOR
W
HAT IS A STACK?
A stack is a Last In, First Out (LIFO) data
structure,objects inserted last are the first to
come out of the stack
Anything added to the stack goes on the “top”
of the stack
Anything removed from the stack is taken from
the “top” of the stack
Things are removed in the reverse order from
that in which they were inserted
W
HAT IS A STACK?
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. In other words,
a stack can be defined as a container in which
insertion and deletion can be done from the one
end known as the top of the stack.
STACKOPERATIONS
•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
A LIFOSTACK
Top
Bottom
Stack Pointer
Push Pop
APPLICATIONS
•Balancing of symbols: Stack is used for balancing a symbol. For example, we have
the following program:
1.int main()
2.{
3. cout<<"Hello";
4. cout<<"javaTpoint";
5.}
As we know, each program has an opening and closing braces; when the opening
braces come, we push the braces in a stack, and when the closing braces appear, we
pop the opening braces from the stack. Therefore, the net value comes out to be zero.
If any symbol is left in the stack, it means that some syntax occurs in a program.
APPLICATIONS
•String reversal: Stack is also used for reversing a
string. For example, we want to reverse a "javaTpoint"
string, so we can achieve this with the help of a stack.
First, we push all the characters of the string in a stack
until we reach the null character.
After pushing all the characters, we start taking out the
character one by one until we reach the bottom of the
stack.
APPLICATIONS
•UNDO/REDO: It can also be used for performing
UNDO/REDO operations.
•For example, we have an editor in which we write 'a', then
'b', and then 'c'; therefore, the text written in an editor is abc.
•So, there are three states, a, ab, and abc, which are stored in
a stack. There would be two stacks in which one stack shows
UNDO state, and the other shows REDO state.
•If we want to perform UNDO operation, and want to achieve
'ab' state, then we implement pop operation.
APPLICATIONS
•Recursion: The recursion means that the function is calling
itself again. To maintain the previous states, the compiler
creates a system stack in which all the previous records of the
function are maintained.
•DFS(Depth First Search): This search is implemented on a
Graph, and Graph uses the stack data structure.
•Backtracking: Suppose we have to create a path to solve a
maze problem. If we are moving in a particular path, and we
realize that we come on the wrong way. In order to come at
the beginning of the path to create a new path, we have to
use the stack data structure.
APPLICATIONS
•Expression conversion: Stack can also be used for
expression conversion. This is one of the most important
applications of stack.
•Memory management: The stack manages the memory.
The memory is assigned in the contiguous memory blocks.
The memory is known as stack memory as all the variables
are assigned in a function call stack memory. The memory
size assigned to the program is known to the compiler. When
the function is created, all its variables are assigned in the
stack memory. When the function completed its execution, all
the variables assigned in the stack are released.
ARRAY IM
PLEM
ENTATIONOF STACK
A[1] A[2] …. …. …. A[n]
w y
Stack pointer
J=n
Stack Full
Stack pointer
J=2
Before Push
Stack pointer
J=3
After Push
After many
Push Ops
Push X w y x
Stack Pointer
J=0
Stack Empty
Pop
After many Pop ops
Stack Pointer
J=3
Before Pop
Stack Pointer
J=2
After Pop
CHECKINGFOR BALANCED BRACES
 ([]({()}[()])) is balanced; ([]({()}[())]) is not
 Simple counting is not enough to check
balance
 You can do it with a stack: going left to
right,
 If you see a (, [, or {, push it on the
stack
 If you see a ), ], or }, pop the stack
and check whether you got the
corresponding (, [, or {
 When you reach the end, check that the
stack is empty
CONVERTING INFIX EXPRESSIONS TOEQUIV
ALENT
POSTFIX EXPRESSIONS
 Infix Expression a+b
 Postfix Expression ab+
 An infix expression can be evaluated by first
being converted into an equivalent postfix
expression
 Facts about converting from infix to postfix
 Operands always stay in the same order with
respect to one another
 All parentheses are removed
ALGORITHM: CONVERTINGINFIX EXPRESSION TO
POSTFIX USINGSTACK
Suppose X is an arithmetic expression written in infix notation.
This algorithm finds the equivalent postfix expression Y.
1. Push "(" onto STACK, and add ")" to the end of X.
2. Scan X from left to right and REPEAT Steps 3 to 6 for each element of X UNTIL the
STACK is empty :
3. If an operand is encountered, add it to Y.
4. If a left parenthesis is encountered, push it onto STACK.
5. If an operator is encountered, then :
(a) Repeatedly pop from STACK and add to Y each operator (on the top of STACK) which has
the same precedence as or higher precedence than operator.
(b) Add operator to STACK.
/* End of If structure * /
6. If a right parenthesis is encountered, then :
(a)Repeatedly pop from STACK and add to Y each operator (on the top of STACK)
until a left parenthesis is encountered.
(b) Remove the left parenthesis. [Do not add the left parenthesis to Y].
/* End of If structure * /
/* End of Step 2 loop * /
7. END.
A trace of the algorithm that converts the infix expression
a - (b + c * d)/e to postfix form
A POSTFIX CALCULATOR
 When an operand is entered, the calculator
 Pushes it onto a stack
 When an operator is entered, the calculator
 Applies it to the top (one or two, depending
on unary or binary operator) operand(s) of
the stack
 Pops the operands from the stack
 Pushes the result of the operation on the
stack
The action of a postfix calculator when evaluating the expression 2 * (3 + 4)
Postfix Notation--- 2 3 4 + *
ACKNOWLEDGEMENT
 DATA STRUCTURES BYTANENBAUM
 INTERNET
 COMPUTER SCIENCE C++ A TEXTBOOK FOR CLASS XII -BY
SUMITAARORA
PREPARED BY-
SEEMA KAUSHIK,
COMPUTER SCIENCE DEPARTMENT,
DAV PUBLIC SCHOOL, SECTOR-14, GURGAON

STACK AND ITS OPERATIONS IN DATA STRUCTURES.pptx

  • 1.
  • 2.
     WHAT ISA STACK  STACK OPERATIONS  LIFOSTACK  ANIMATION DEPICTING PUSH OPERATION  ANIMATION DEPICTING POP OPERATION  ARRAYIMPLEMENTATIONOF STACK  APPLICATIONS OF STACK CHECKING FOR BALANCEDBRACES CONVERTING INFIX EXPRESSION TO POSTFIX POSTFIX CALCULATOR
  • 3.
    W HAT IS ASTACK? A stack is a Last In, First Out (LIFO) data structure,objects inserted last are the first to come out of the stack Anything added to the stack goes on the “top” of the stack Anything removed from the stack is taken from the “top” of the stack Things are removed in the reverse order from that in which they were inserted
  • 4.
    W HAT IS ASTACK? 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. In other words, a stack can be defined as a container in which insertion and deletion can be done from the one end known as the top of the stack.
  • 5.
    STACKOPERATIONS •push(): When weinsert 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
  • 6.
  • 13.
    APPLICATIONS •Balancing of symbols:Stack is used for balancing a symbol. For example, we have the following program: 1.int main() 2.{ 3. cout<<"Hello"; 4. cout<<"javaTpoint"; 5.} As we know, each program has an opening and closing braces; when the opening braces come, we push the braces in a stack, and when the closing braces appear, we pop the opening braces from the stack. Therefore, the net value comes out to be zero. If any symbol is left in the stack, it means that some syntax occurs in a program.
  • 14.
    APPLICATIONS •String reversal: Stackis also used for reversing a string. For example, we want to reverse a "javaTpoint" string, so we can achieve this with the help of a stack. First, we push all the characters of the string in a stack until we reach the null character. After pushing all the characters, we start taking out the character one by one until we reach the bottom of the stack.
  • 15.
    APPLICATIONS •UNDO/REDO: It canalso be used for performing UNDO/REDO operations. •For example, we have an editor in which we write 'a', then 'b', and then 'c'; therefore, the text written in an editor is abc. •So, there are three states, a, ab, and abc, which are stored in a stack. There would be two stacks in which one stack shows UNDO state, and the other shows REDO state. •If we want to perform UNDO operation, and want to achieve 'ab' state, then we implement pop operation.
  • 16.
    APPLICATIONS •Recursion: The recursionmeans that the function is calling itself again. To maintain the previous states, the compiler creates a system stack in which all the previous records of the function are maintained. •DFS(Depth First Search): This search is implemented on a Graph, and Graph uses the stack data structure. •Backtracking: Suppose we have to create a path to solve a maze problem. If we are moving in a particular path, and we realize that we come on the wrong way. In order to come at the beginning of the path to create a new path, we have to use the stack data structure.
  • 17.
    APPLICATIONS •Expression conversion: Stackcan also be used for expression conversion. This is one of the most important applications of stack. •Memory management: The stack manages the memory. The memory is assigned in the contiguous memory blocks. The memory is known as stack memory as all the variables are assigned in a function call stack memory. The memory size assigned to the program is known to the compiler. When the function is created, all its variables are assigned in the stack memory. When the function completed its execution, all the variables assigned in the stack are released.
  • 19.
    ARRAY IM PLEM ENTATIONOF STACK A[1]A[2] …. …. …. A[n] w y Stack pointer J=n Stack Full Stack pointer J=2 Before Push Stack pointer J=3 After Push After many Push Ops Push X w y x Stack Pointer J=0 Stack Empty Pop After many Pop ops Stack Pointer J=3 Before Pop Stack Pointer J=2 After Pop
  • 20.
    CHECKINGFOR BALANCED BRACES ([]({()}[()])) is balanced; ([]({()}[())]) is not  Simple counting is not enough to check balance  You can do it with a stack: going left to right,  If you see a (, [, or {, push it on the stack  If you see a ), ], or }, pop the stack and check whether you got the corresponding (, [, or {  When you reach the end, check that the stack is empty
  • 22.
    CONVERTING INFIX EXPRESSIONSTOEQUIV ALENT POSTFIX EXPRESSIONS  Infix Expression a+b  Postfix Expression ab+  An infix expression can be evaluated by first being converted into an equivalent postfix expression  Facts about converting from infix to postfix  Operands always stay in the same order with respect to one another  All parentheses are removed
  • 23.
    ALGORITHM: CONVERTINGINFIX EXPRESSIONTO POSTFIX USINGSTACK Suppose X is an arithmetic expression written in infix notation. This algorithm finds the equivalent postfix expression Y. 1. Push "(" onto STACK, and add ")" to the end of X. 2. Scan X from left to right and REPEAT Steps 3 to 6 for each element of X UNTIL the STACK is empty : 3. If an operand is encountered, add it to Y. 4. If a left parenthesis is encountered, push it onto STACK. 5. If an operator is encountered, then : (a) Repeatedly pop from STACK and add to Y each operator (on the top of STACK) which has the same precedence as or higher precedence than operator. (b) Add operator to STACK. /* End of If structure * / 6. If a right parenthesis is encountered, then : (a)Repeatedly pop from STACK and add to Y each operator (on the top of STACK) until a left parenthesis is encountered. (b) Remove the left parenthesis. [Do not add the left parenthesis to Y]. /* End of If structure * / /* End of Step 2 loop * / 7. END.
  • 24.
    A trace ofthe algorithm that converts the infix expression a - (b + c * d)/e to postfix form
  • 25.
    A POSTFIX CALCULATOR When an operand is entered, the calculator  Pushes it onto a stack  When an operator is entered, the calculator  Applies it to the top (one or two, depending on unary or binary operator) operand(s) of the stack  Pops the operands from the stack  Pushes the result of the operation on the stack
  • 26.
    The action ofa postfix calculator when evaluating the expression 2 * (3 + 4) Postfix Notation--- 2 3 4 + *
  • 27.
    ACKNOWLEDGEMENT  DATA STRUCTURESBYTANENBAUM  INTERNET  COMPUTER SCIENCE C++ A TEXTBOOK FOR CLASS XII -BY SUMITAARORA PREPARED BY- SEEMA KAUSHIK, COMPUTER SCIENCE DEPARTMENT, DAV PUBLIC SCHOOL, SECTOR-14, GURGAON