SlideShare a Scribd company logo
The STACK
Unit 3
Simple as it sounds
Fig. stack of items
Ashim Lamichhane 2
Definition
• A stack is an ordered collection of items into which new items
may be inserted and from which items may be deleted at one end,
called the top of the stack.
• Stack is a linear data structure where all the insertions and deletions
are done at end rather than in the middle.
• Stacks are also called Last in First Out (LIFO) lists.
Ashim Lamichhane 3
Intro
• We may come across situations, where insertion or deletion is
required only at one end, either at the beginning or end of the list.
• The suitable data structures to fulfil such requirements are stacks and
queues.
• For ex. a stack of plates, a stack of coins, a stack of books etc.
Ashim Lamichhane 4
Stack as an abstract data type
• A stack of elements of type T is a finite sequence of elements together
with the operations
1. CreateEmptyStack(S): create or make stack S be an empty stack
2. Push(S,x): Insert x at one end of the stack, called its top
3. Top(S): If stack S is not empty; then retrieve the element at its top
4. Pop(S): If stack S is not empty; then delete the element at its top
5. IsFull(S): Determine if S is full or not. Return true if S is full stack; return false
otherwise
6. IsEmpty(S): Determine if S is empty or not. Return true if S is an empty stack;
return false otherwise.
Ashim Lamichhane 5
Ashim Lamichhane 6
Example of Push Pop
Ashim Lamichhane 7
Thing to consider
• Stack underflow happens when
we try to pop (remove) an item from
the stack, when nothing is actually
there to remove.
• Stack overflow happens when we
try to push one more item onto our
stack than it can actually hold.
Ashim Lamichhane 8
Stack As a Linked List
• The stack as linked list is represented as a single linked list.
• Each node in the list contains data and a pointer to the next node.
• The structure defined to represent stack is as follows:
struct node{
int data;
node *next;
};
Fig. Stack as a linked list
Ashim Lamichhane 9
Infix, Postfix and Prefix
• 2+3 <operand><operator><operand>
• A-b
• (P*2)
Operands are basic objects on which operation is performed
INFIX
<operand><operator><operand>
• (2+3) * 4 (2+3) * 4
• (P+Q)*(R+S) (P+Q) * (R+S)
Common expressions
Ashim Lamichhane 10
Infix
• What about 4+6*2and what about 4+6+2
• To clear ambiguity we remember school Mathematics
• Order of precedence
1. Parentheses (Brackets)
2. Order (Exponents)
3. Division
4. Multiplication
5. Addition
6. Subtraction
• So 4+6*2 | 2*6/2 -3 +7 | {(2*6)/2}-(3+7)
=4+12 | = 2*3-3+7 | = ???
=16 | = 6-3+7 | = ??
| = 3+7=10 | = ?
Ashim Lamichhane 11
Prefix (polish notation)
• In prefix notation the operator proceeds the two operands. i.e. the
operator is written before the operands.
<operator><operand><operand>
infix prefix
2+3 +23
p-q -pq
a+b*c +a*bc
Ashim Lamichhane 12
Postfix (Reverse Polish Notation)
• In postfix notation the operators are written after the operands so it is
called the postfix notation (post means after).
<operand><operand><operator>
infix prefix postfix
2+3 +23 23+
p-q -pq pq-
a+b*c +a*bc abc*+
Human-readable Good for machines
Ashim Lamichhane 13
Conversion of Infix to Postfix Expression
• While evaluating an infix expression, there is an evaluation order according to
which the operations are executed
• Brackets or Parentheses
• Exponentiation
• Multiplication or Division
• Addition or Subtraction
• The operators with same priority are evaluated from left to right.
• Eg:
• A+B+C means (A+B)+C
Ashim Lamichhane 14
Evaluation of Prefix and Postfix Expressions
• Suppose an expression
a*b+c*d-e
• We can write this as:
{(a*b)+(c*d)}-e
• As we want to change it into postfix expression
{(ab*)+(cd*)}-e
{(ab*)(cd*)+}-e
{(ab*)(cd*)+} e-
• Final form
ab*cd*+e-
Ashim Lamichhane 15
Evaluation of Postfix Expressions
• Suppose we have a postfix expression
ab*cd*+e-
• And we want to evaluate it so lets say
a=2, b=3,c=5,d=4,e=9
• We can solve this as,
2 3 * 5 4 * + 9 – <operand><operand><operator>
6 5 4 * + 9 –
6 20 + 9 –
26 9 –
17
Ashim Lamichhane 16
Evaluation of Postfix Expressions
• From above we get,
2 3 * 5 4 * + 9 –
Stack
EvaluatePostfix(exp)
{
create a stack S
for i=0 to length (exp) -1
{
if (exp[i] is operand)
PUSH(exp[i])
elseif (exp[i] is operator)
op2 <- pop()
op1 <- pop()
res– Perform(exp[i],op1,op2)
PUSH(res)
}
return top of STACK
}
2
3
Ashim Lamichhane 17
Evaluation of Prefix expressions
• An expression: 2*3 +5*4-9
• Can be written as:
{(2*3)+(5*4)}-9
{(*2 3)+(*5 4)}-9
{+(*2 3) (*5 4)}-9
-{+(*2 3) (*5 4)}9
• We can get Rid of Paranthesis
-+*2 3 *5 4 9
Ashim Lamichhane 18
Evaluation of Prefix expressions
• We have to scan it from right
-+*2 3 *5 4 9
Stack
9
4
5
Stack
9
20
6
Stack
9
26
Stack
17
Ashim Lamichhane 19
Algorithm to convert Infix to Postfix
Ashim Lamichhane 20
Examples:
1. A * B + C becomes A B * C +
NOTE:
• When the '+' is read, it has lower precedence than the '*', so the '*' must be printed first.
Ashim Lamichhane 21
current symbol Opstack Poststack
A A
* * A
B * AB
+ + AB* {pop and print the '*' before pushing the '+'}
C + AB*C
AB*C+
Examples:
2. A * (B + C) becomes A B C + *
NOTE:
• Since expressions in parentheses must be done first, everything on the stack is saved and the left
parenthesis is pushed to provide a marker.
• When the next operator is read, the stack is treated as though it were empty and the new operator
(here the '+' sign) is pushed on.
• Then when the right parenthesis is read, the stack is popped until the corresponding left parenthesis is
found.
• Since postfix expressions have no parentheses, the parentheses are not printed.
Ashim Lamichhane 22
current symbol Opstack Poststack
A A
* * A
( *( A
B *( AB
+ *(+ AB
C *(+ ABC
) * ABC+
ABC+*
Ashim Lamichhane 23
Classwork
• A - B + C
• A * B ^ C + D
• A * (B + C * D) + E
Ashim Lamichhane 24
References
• For Code Check Github
• For Assignment Check Github
Ashim Lamichhane 25
Recursion
• Recursion is a process by which a function calls itself repeatedly, until
some specified condition has been satisfied
• The process is used for repetitive computations in which each action is
stated in terms of a previous result.
• To solve a problem recursively, two conditions must be satisfied.
• First, the problem must be written in a recursive form
• Second the problem statement must include a stopping condition
Ashim Lamichhane 26
Factorial of an integer number using recursive function
void main(){
int n;
long int facto;
scanf(“%d”,&n);
facto=factorial(n);
printf(“%d!=%ld”,n,facto);
}
long int factorial(int n){
if(n==0){
return 1;
}else{
return n*factorial(n-1);
}
Factorial(5)=
5*Factorial(4)=
5*(4*Factorial(3))=
5*(4*(3*Factorial(2)))=
5*(4*(3*(2*Factorial(1))))=
5*(4*(3*(2*(1*Factorial(0)))))=
5*(4*(3*(2*(1*1))))= 5*(4*(3*(2*1)))=
5*(4*(3*2))= 5*(4*6)= 5*24=
120
Ashim Lamichhane 27
Recursion Pros and Cons
• Pros
• The code may be much easier to write.
• To solve some problems which are naturally recursive such as tower of Hanoi.
• Cons
• Recursive functions are generally slower than non-recursive functions.
• May require a lot of memory to hold intermediate results on the system stack.
• It is difficult to think recursively so one must be very careful when writing
recursive functions.
Ashim Lamichhane 28
Tower of Hanoi Problem
Ashim Lamichhane 29
Tower of Hanoi Problem
• The mission is to move all the disks to some another tower without
violating the sequence of arrangement.
• The below mentioned are few rules which are to be followed for tower
of hanoi −
• Only one disk can be moved among the towers at any given time.
• Only the "top" disk can be removed.
• No large disk can sit over a small disk.
Ashim Lamichhane 30
A recursive algorithm for Tower of Hanoi can be driven as follows −
Ashim Lamichhane 31
THE END
Ashim Lamichhane 32

More Related Content

What's hot (20)

PPTX
Data structure by Digvijay
Digvijay Singh Karakoti
 
PPTX
Priority Queue in Data Structure
Meghaj Mallick
 
PPTX
Data Structures - Lecture 9 [Stack & Queue using Linked List]
Muhammad Hammad Waseem
 
PDF
Array data structure
maamir farooq
 
PPTX
Stack and Queue
Apurbo Datta
 
PPT
Lec 17 heap data structure
Sajid Marwat
 
PPTX
Queues
Ashim Lamichhane
 
PPT
Data Structure and Algorithms Heaps and Trees
ManishPrajapati78
 
PPTX
Infix to postfix conversion
Then Murugeshwari
 
PPTX
Application of Stack For Expression Evaluation by Prakash Zodge DSY 41.pptx
Prakash Zodge
 
PPTX
Hashing Technique In Data Structures
SHAKOOR AB
 
PPTX
Stack Data Structure
Afaq Mansoor Khan
 
PPT
Queue Data Structure
Zidny Nafan
 
PDF
Applications of stack
eShikshak
 
PPTX
Tree Traversal
Md. Israil Fakir
 
PPTX
Stacks IN DATA STRUCTURES
Sowmya Jyothi
 
PPT
Stack
srihariyenduri
 
PPT
Stack a Data Structure
ForwardBlog Enewzletter
 
PPTX
Data Structures in Python
Devashish Kumar
 
PPTX
heap Sort Algorithm
Lemia Algmri
 
Data structure by Digvijay
Digvijay Singh Karakoti
 
Priority Queue in Data Structure
Meghaj Mallick
 
Data Structures - Lecture 9 [Stack & Queue using Linked List]
Muhammad Hammad Waseem
 
Array data structure
maamir farooq
 
Stack and Queue
Apurbo Datta
 
Lec 17 heap data structure
Sajid Marwat
 
Data Structure and Algorithms Heaps and Trees
ManishPrajapati78
 
Infix to postfix conversion
Then Murugeshwari
 
Application of Stack For Expression Evaluation by Prakash Zodge DSY 41.pptx
Prakash Zodge
 
Hashing Technique In Data Structures
SHAKOOR AB
 
Stack Data Structure
Afaq Mansoor Khan
 
Queue Data Structure
Zidny Nafan
 
Applications of stack
eShikshak
 
Tree Traversal
Md. Israil Fakir
 
Stacks IN DATA STRUCTURES
Sowmya Jyothi
 
Stack a Data Structure
ForwardBlog Enewzletter
 
Data Structures in Python
Devashish Kumar
 
heap Sort Algorithm
Lemia Algmri
 

Viewers also liked (20)

PPTX
Sorting
Ashim Lamichhane
 
PPTX
Searching
Ashim Lamichhane
 
PPTX
Introduction to data_structure
Ashim Lamichhane
 
PPTX
Algorithm big o
Ashim Lamichhane
 
PPTX
Unit 11. Graphics
Ashim Lamichhane
 
PPTX
Algorithm Introduction
Ashim Lamichhane
 
PPTX
Unit 9. Structure and Unions
Ashim Lamichhane
 
PPSX
Stacks Implementation and Examples
greatqadirgee4u
 
PPTX
Stack data structure
Tech_MX
 
PPTX
Friedman two way analysis of variance by
Iybaro Reyes
 
PDF
Polish nootation
Srikanth Chennupati
 
PPTX
Lecture 10 data structures and algorithms
Aakash deep Singhal
 
PDF
ARM procedure calling conventions and recursion
Stephan Cadene
 
PPTX
Program activation records
Nitin Reddy Katkam
 
PPTX
Unit 8. Pointers
Ashim Lamichhane
 
PPTX
Memory Management
Visakh V
 
PDF
Dsa circular queue
zzzubair
 
PPTX
Unit 6. Arrays
Ashim Lamichhane
 
PPT
Stacks in algorithems & data structure
faran nawaz
 
PPT
Recursion
grahamwell
 
Searching
Ashim Lamichhane
 
Introduction to data_structure
Ashim Lamichhane
 
Algorithm big o
Ashim Lamichhane
 
Unit 11. Graphics
Ashim Lamichhane
 
Algorithm Introduction
Ashim Lamichhane
 
Unit 9. Structure and Unions
Ashim Lamichhane
 
Stacks Implementation and Examples
greatqadirgee4u
 
Stack data structure
Tech_MX
 
Friedman two way analysis of variance by
Iybaro Reyes
 
Polish nootation
Srikanth Chennupati
 
Lecture 10 data structures and algorithms
Aakash deep Singhal
 
ARM procedure calling conventions and recursion
Stephan Cadene
 
Program activation records
Nitin Reddy Katkam
 
Unit 8. Pointers
Ashim Lamichhane
 
Memory Management
Visakh V
 
Dsa circular queue
zzzubair
 
Unit 6. Arrays
Ashim Lamichhane
 
Stacks in algorithems & data structure
faran nawaz
 
Recursion
grahamwell
 
Ad

Similar to The Stack And Recursion (20)

PPT
lecture10trsgfchjvxgfzfdchgdchgcgshyjh.ppt
partho5958
 
PPTX
Stack_Overview_Implementation_WithVode.pptx
chandankumar364348
 
PPT
Data structure lecture7
Kumar
 
PPTX
Unit 3 stack
Dabbal Singh Mahara
 
PPTX
STACK1.pptx
MouDhara1
 
PPT
week 7,8,10,11 alll files included from .ppt
LidetAdmassu
 
PPTX
DS-UNIT 3 FINAL.pptx
prakashvs7
 
PPSX
Data structure_Stack Introduction & app.
AnuradhaJadiya1
 
PPT
Stacks.ppt
OliverKane3
 
PPT
Stacks.ppt
OliverKane3
 
PPTX
DSA_Unit3_ Stacks and Queues using array (1).pptx
nandinigujarathi9
 
PPTX
introduction of the Stacks and Queues.pptx
kavitashingi123
 
PPTX
Data structures
Rokonuzzaman Rony
 
PDF
Stacks,queues,linked-list
pinakspatel
 
PPT
Stacks
sweta dargad
 
PPTX
UNIT II LINEAR DATA STRUCTURES – STACKS.pptx
kncetaruna
 
PPTX
5.-Stacks.pptx
iloveyoucarlo0923
 
PPTX
Chapter 4 data structure and algorithm - Stacks and Queues
afendimohammed288
 
PPTX
CH4.pptx
AliJama14
 
lecture10trsgfchjvxgfzfdchgdchgcgshyjh.ppt
partho5958
 
Stack_Overview_Implementation_WithVode.pptx
chandankumar364348
 
Data structure lecture7
Kumar
 
Unit 3 stack
Dabbal Singh Mahara
 
STACK1.pptx
MouDhara1
 
week 7,8,10,11 alll files included from .ppt
LidetAdmassu
 
DS-UNIT 3 FINAL.pptx
prakashvs7
 
Data structure_Stack Introduction & app.
AnuradhaJadiya1
 
Stacks.ppt
OliverKane3
 
Stacks.ppt
OliverKane3
 
DSA_Unit3_ Stacks and Queues using array (1).pptx
nandinigujarathi9
 
introduction of the Stacks and Queues.pptx
kavitashingi123
 
Data structures
Rokonuzzaman Rony
 
Stacks,queues,linked-list
pinakspatel
 
Stacks
sweta dargad
 
UNIT II LINEAR DATA STRUCTURES – STACKS.pptx
kncetaruna
 
5.-Stacks.pptx
iloveyoucarlo0923
 
Chapter 4 data structure and algorithm - Stacks and Queues
afendimohammed288
 
CH4.pptx
AliJama14
 
Ad

More from Ashim Lamichhane (8)

PPTX
Tree - Data Structure
Ashim Lamichhane
 
PPTX
UNIT 10. Files and file handling in C
Ashim Lamichhane
 
PPTX
Unit 7. Functions
Ashim Lamichhane
 
PPTX
Unit 5. Control Statement
Ashim Lamichhane
 
PPTX
Unit 4. Operators and Expression
Ashim Lamichhane
 
PPTX
Unit 3. Input and Output
Ashim Lamichhane
 
PPTX
Unit 2. Elements of C
Ashim Lamichhane
 
PPTX
Unit 1. Problem Solving with Computer
Ashim Lamichhane
 
Tree - Data Structure
Ashim Lamichhane
 
UNIT 10. Files and file handling in C
Ashim Lamichhane
 
Unit 7. Functions
Ashim Lamichhane
 
Unit 5. Control Statement
Ashim Lamichhane
 
Unit 4. Operators and Expression
Ashim Lamichhane
 
Unit 3. Input and Output
Ashim Lamichhane
 
Unit 2. Elements of C
Ashim Lamichhane
 
Unit 1. Problem Solving with Computer
Ashim Lamichhane
 

Recently uploaded (20)

PDF
How Startups Are Growing Faster with App Developers in Australia.pdf
India App Developer
 
PPTX
OpenID AuthZEN - Analyst Briefing July 2025
David Brossard
 
PPTX
Q2 FY26 Tableau User Group Leader Quarterly Call
lward7
 
PDF
Exolore The Essential AI Tools in 2025.pdf
Srinivasan M
 
PDF
Building Real-Time Digital Twins with IBM Maximo & ArcGIS Indoors
Safe Software
 
PDF
Agentic AI lifecycle for Enterprise Hyper-Automation
Debmalya Biswas
 
PDF
Achieving Consistent and Reliable AI Code Generation - Medusa AI
medusaaico
 
PDF
Bitcoin for Millennials podcast with Bram, Power Laws of Bitcoin
Stephen Perrenod
 
PPTX
AI Penetration Testing Essentials: A Cybersecurity Guide for 2025
defencerabbit Team
 
PPTX
Future Tech Innovations 2025 – A TechLists Insight
TechLists
 
PPTX
Webinar: Introduction to LF Energy EVerest
DanBrown980551
 
PDF
CIFDAQ Market Insights for July 7th 2025
CIFDAQ
 
DOCX
Python coding for beginners !! Start now!#
Rajni Bhardwaj Grover
 
PDF
Advancing WebDriver BiDi support in WebKit
Igalia
 
PDF
Staying Human in a Machine- Accelerated World
Catalin Jora
 
PDF
Empower Inclusion Through Accessible Java Applications
Ana-Maria Mihalceanu
 
PDF
Using FME to Develop Self-Service CAD Applications for a Major UK Police Force
Safe Software
 
PPTX
Designing Production-Ready AI Agents
Kunal Rai
 
PDF
"AI Transformation: Directions and Challenges", Pavlo Shaternik
Fwdays
 
PDF
[Newgen] NewgenONE Marvin Brochure 1.pdf
darshakparmar
 
How Startups Are Growing Faster with App Developers in Australia.pdf
India App Developer
 
OpenID AuthZEN - Analyst Briefing July 2025
David Brossard
 
Q2 FY26 Tableau User Group Leader Quarterly Call
lward7
 
Exolore The Essential AI Tools in 2025.pdf
Srinivasan M
 
Building Real-Time Digital Twins with IBM Maximo & ArcGIS Indoors
Safe Software
 
Agentic AI lifecycle for Enterprise Hyper-Automation
Debmalya Biswas
 
Achieving Consistent and Reliable AI Code Generation - Medusa AI
medusaaico
 
Bitcoin for Millennials podcast with Bram, Power Laws of Bitcoin
Stephen Perrenod
 
AI Penetration Testing Essentials: A Cybersecurity Guide for 2025
defencerabbit Team
 
Future Tech Innovations 2025 – A TechLists Insight
TechLists
 
Webinar: Introduction to LF Energy EVerest
DanBrown980551
 
CIFDAQ Market Insights for July 7th 2025
CIFDAQ
 
Python coding for beginners !! Start now!#
Rajni Bhardwaj Grover
 
Advancing WebDriver BiDi support in WebKit
Igalia
 
Staying Human in a Machine- Accelerated World
Catalin Jora
 
Empower Inclusion Through Accessible Java Applications
Ana-Maria Mihalceanu
 
Using FME to Develop Self-Service CAD Applications for a Major UK Police Force
Safe Software
 
Designing Production-Ready AI Agents
Kunal Rai
 
"AI Transformation: Directions and Challenges", Pavlo Shaternik
Fwdays
 
[Newgen] NewgenONE Marvin Brochure 1.pdf
darshakparmar
 

The Stack And Recursion

  • 2. Simple as it sounds Fig. stack of items Ashim Lamichhane 2
  • 3. Definition • A stack is an ordered collection of items into which new items may be inserted and from which items may be deleted at one end, called the top of the stack. • Stack is a linear data structure where all the insertions and deletions are done at end rather than in the middle. • Stacks are also called Last in First Out (LIFO) lists. Ashim Lamichhane 3
  • 4. Intro • We may come across situations, where insertion or deletion is required only at one end, either at the beginning or end of the list. • The suitable data structures to fulfil such requirements are stacks and queues. • For ex. a stack of plates, a stack of coins, a stack of books etc. Ashim Lamichhane 4
  • 5. Stack as an abstract data type • A stack of elements of type T is a finite sequence of elements together with the operations 1. CreateEmptyStack(S): create or make stack S be an empty stack 2. Push(S,x): Insert x at one end of the stack, called its top 3. Top(S): If stack S is not empty; then retrieve the element at its top 4. Pop(S): If stack S is not empty; then delete the element at its top 5. IsFull(S): Determine if S is full or not. Return true if S is full stack; return false otherwise 6. IsEmpty(S): Determine if S is empty or not. Return true if S is an empty stack; return false otherwise. Ashim Lamichhane 5
  • 7. Example of Push Pop Ashim Lamichhane 7
  • 8. Thing to consider • Stack underflow happens when we try to pop (remove) an item from the stack, when nothing is actually there to remove. • Stack overflow happens when we try to push one more item onto our stack than it can actually hold. Ashim Lamichhane 8
  • 9. Stack As a Linked List • The stack as linked list is represented as a single linked list. • Each node in the list contains data and a pointer to the next node. • The structure defined to represent stack is as follows: struct node{ int data; node *next; }; Fig. Stack as a linked list Ashim Lamichhane 9
  • 10. Infix, Postfix and Prefix • 2+3 <operand><operator><operand> • A-b • (P*2) Operands are basic objects on which operation is performed INFIX <operand><operator><operand> • (2+3) * 4 (2+3) * 4 • (P+Q)*(R+S) (P+Q) * (R+S) Common expressions Ashim Lamichhane 10
  • 11. Infix • What about 4+6*2and what about 4+6+2 • To clear ambiguity we remember school Mathematics • Order of precedence 1. Parentheses (Brackets) 2. Order (Exponents) 3. Division 4. Multiplication 5. Addition 6. Subtraction • So 4+6*2 | 2*6/2 -3 +7 | {(2*6)/2}-(3+7) =4+12 | = 2*3-3+7 | = ??? =16 | = 6-3+7 | = ?? | = 3+7=10 | = ? Ashim Lamichhane 11
  • 12. Prefix (polish notation) • In prefix notation the operator proceeds the two operands. i.e. the operator is written before the operands. <operator><operand><operand> infix prefix 2+3 +23 p-q -pq a+b*c +a*bc Ashim Lamichhane 12
  • 13. Postfix (Reverse Polish Notation) • In postfix notation the operators are written after the operands so it is called the postfix notation (post means after). <operand><operand><operator> infix prefix postfix 2+3 +23 23+ p-q -pq pq- a+b*c +a*bc abc*+ Human-readable Good for machines Ashim Lamichhane 13
  • 14. Conversion of Infix to Postfix Expression • While evaluating an infix expression, there is an evaluation order according to which the operations are executed • Brackets or Parentheses • Exponentiation • Multiplication or Division • Addition or Subtraction • The operators with same priority are evaluated from left to right. • Eg: • A+B+C means (A+B)+C Ashim Lamichhane 14
  • 15. Evaluation of Prefix and Postfix Expressions • Suppose an expression a*b+c*d-e • We can write this as: {(a*b)+(c*d)}-e • As we want to change it into postfix expression {(ab*)+(cd*)}-e {(ab*)(cd*)+}-e {(ab*)(cd*)+} e- • Final form ab*cd*+e- Ashim Lamichhane 15
  • 16. Evaluation of Postfix Expressions • Suppose we have a postfix expression ab*cd*+e- • And we want to evaluate it so lets say a=2, b=3,c=5,d=4,e=9 • We can solve this as, 2 3 * 5 4 * + 9 – <operand><operand><operator> 6 5 4 * + 9 – 6 20 + 9 – 26 9 – 17 Ashim Lamichhane 16
  • 17. Evaluation of Postfix Expressions • From above we get, 2 3 * 5 4 * + 9 – Stack EvaluatePostfix(exp) { create a stack S for i=0 to length (exp) -1 { if (exp[i] is operand) PUSH(exp[i]) elseif (exp[i] is operator) op2 <- pop() op1 <- pop() res– Perform(exp[i],op1,op2) PUSH(res) } return top of STACK } 2 3 Ashim Lamichhane 17
  • 18. Evaluation of Prefix expressions • An expression: 2*3 +5*4-9 • Can be written as: {(2*3)+(5*4)}-9 {(*2 3)+(*5 4)}-9 {+(*2 3) (*5 4)}-9 -{+(*2 3) (*5 4)}9 • We can get Rid of Paranthesis -+*2 3 *5 4 9 Ashim Lamichhane 18
  • 19. Evaluation of Prefix expressions • We have to scan it from right -+*2 3 *5 4 9 Stack 9 4 5 Stack 9 20 6 Stack 9 26 Stack 17 Ashim Lamichhane 19
  • 20. Algorithm to convert Infix to Postfix Ashim Lamichhane 20
  • 21. Examples: 1. A * B + C becomes A B * C + NOTE: • When the '+' is read, it has lower precedence than the '*', so the '*' must be printed first. Ashim Lamichhane 21 current symbol Opstack Poststack A A * * A B * AB + + AB* {pop and print the '*' before pushing the '+'} C + AB*C AB*C+
  • 22. Examples: 2. A * (B + C) becomes A B C + * NOTE: • Since expressions in parentheses must be done first, everything on the stack is saved and the left parenthesis is pushed to provide a marker. • When the next operator is read, the stack is treated as though it were empty and the new operator (here the '+' sign) is pushed on. • Then when the right parenthesis is read, the stack is popped until the corresponding left parenthesis is found. • Since postfix expressions have no parentheses, the parentheses are not printed. Ashim Lamichhane 22 current symbol Opstack Poststack A A * * A ( *( A B *( AB + *(+ AB C *(+ ABC ) * ABC+ ABC+*
  • 24. Classwork • A - B + C • A * B ^ C + D • A * (B + C * D) + E Ashim Lamichhane 24
  • 25. References • For Code Check Github • For Assignment Check Github Ashim Lamichhane 25
  • 26. Recursion • Recursion is a process by which a function calls itself repeatedly, until some specified condition has been satisfied • The process is used for repetitive computations in which each action is stated in terms of a previous result. • To solve a problem recursively, two conditions must be satisfied. • First, the problem must be written in a recursive form • Second the problem statement must include a stopping condition Ashim Lamichhane 26
  • 27. Factorial of an integer number using recursive function void main(){ int n; long int facto; scanf(“%d”,&n); facto=factorial(n); printf(“%d!=%ld”,n,facto); } long int factorial(int n){ if(n==0){ return 1; }else{ return n*factorial(n-1); } Factorial(5)= 5*Factorial(4)= 5*(4*Factorial(3))= 5*(4*(3*Factorial(2)))= 5*(4*(3*(2*Factorial(1))))= 5*(4*(3*(2*(1*Factorial(0)))))= 5*(4*(3*(2*(1*1))))= 5*(4*(3*(2*1)))= 5*(4*(3*2))= 5*(4*6)= 5*24= 120 Ashim Lamichhane 27
  • 28. Recursion Pros and Cons • Pros • The code may be much easier to write. • To solve some problems which are naturally recursive such as tower of Hanoi. • Cons • Recursive functions are generally slower than non-recursive functions. • May require a lot of memory to hold intermediate results on the system stack. • It is difficult to think recursively so one must be very careful when writing recursive functions. Ashim Lamichhane 28
  • 29. Tower of Hanoi Problem Ashim Lamichhane 29
  • 30. Tower of Hanoi Problem • The mission is to move all the disks to some another tower without violating the sequence of arrangement. • The below mentioned are few rules which are to be followed for tower of hanoi − • Only one disk can be moved among the towers at any given time. • Only the "top" disk can be removed. • No large disk can sit over a small disk. Ashim Lamichhane 30
  • 31. A recursive algorithm for Tower of Hanoi can be driven as follows − Ashim Lamichhane 31