Stack
Stack
General Representation
and Operations
Kiranpal Singh Virk
Assistant Professor, Guru Nanak Khalsa College
Yamuna Nagar
([email protected])
TOPICS
• Introduction
• Representation
– Arrays
– Linked List
• Operations
PUSH operation
POP operation
STACK
• Generally speaking:
– “a neat pile of objects”
– “rectangular or cylindrical pile of hay,
straw etc”
BOOK STACK
FOOD STACK
CD STACK
STACK
Last-in First-Out
IN OUT
3 2 1
STACK
Last-in First-Out
IN OUT
1 2 3
STACK
Last-in First-Out
IN OUT
1 2 3
STACK APPLICATIONS
• Applications of Stacks
– Page-visited history in a Web browser
– Undo sequence in a text editor
– Saving local variables when one function calls
another, and this one calls another, and so on.
REPRESENTATION OF
STACK
n-1
B 2
A B C D
A 1
1 2 3 4 ….. ….. n-1 n
ARRAY-BASED STACK
top H
top G G
top F F F
top E E E E
top D D D D D
C C C C C
B B B B B
A A A A A
(a) (b) (c) (d) (e)
ARRAY-BASED STACK
top H
G top G
F F top F
E E E top E
D D D D top D
C C C C C
B B B B B
A A A A A
(e) (f) (g) (h) (i)
ARRAY-BASED STACK
H
G G G
F F F F F
top E E E E E E E
D D D D D D D D D
C C C C C C C C C
B B B B B B B B B
A A A A A A A A A
(a) (b) (c) (d) (e) (f) (g) (h) (i)
ARRAY-BASED STACK
E
top D
C
B
A
ARRAY-BASED STACK
F
top E
D
C
B
A
ARRAY-BASED STACK
G
top F
E
D
C
B
A
ARRAY-BASED STACK
H
top G
F
E
D
C
B
A
ARRAY-BASED STACK
TOP MAXSTK
S …..
ARRAY-BASED STACK
TOP=NULL
MAXSTK
STACK
1 2 3 4 5 6 7 8
ARRAY-BASED STACK
TOP MAXSTK
STACK A B C D E F G H
1 2 3 4 5 6 7 8
ARRAY-BASED STACK
• MAXSTK=8
• TOP=4
• 4 more items can be added on the stack
TOP MAXSTK
STACK A B C D
1 2 3 4 5 6 7 8
OPERATIONS ON
STACK
STACK[TOP] = ITEM
STOP
START PUSH OPERATION
STACK[TOP] = ITEM
STOP
POP OPERATION
YES PRINT
IF TOP = 0
“UNDERFLOW”
NO
ITEM = STACK[TOP]
TOP = TOP - 1
STOP
START POP OPERATION
YES PRINT
IF TOP = 0
“UNDERFLOW”
NO
ITEM = STACK[TOP]
TOP = TOP - 1
STOP
LIMITATIONS OF
ARRAY-BASED STACK
TOP •
3 2 1
• • X
PUSH OPERATION
LINKED LIST BASED
STACK
TOP •
4 3 2 1
• • • X
PUSH OPERATION
LINKED LIST BASED
STACK
TOP •
4 3 2 1
• • • X
POP OPERATION
LINKED LIST BASED
STACK
TOP •
3 2 1
• • X
POP OPERATION
main( ) FUNCTION
{ CALL STACK
int a = 5, b = 2, c ;
c = add ( a, b ) ;
when call
printf ( "sum = %d", c ) ;
to add() is
} met
add ( int i, int j )
{
int sum ;
sum = i + j ;
return sum ; 5 copy of a
} 2 copy of b
main( ) FUNCTION
{ CALL STACK
int a = 5, b = 2, c ;
c = add ( a, b ) ;
printf ( "sum = %d", c ) ; before
transferring
} control to
add ( int i, int j ) add()
{
int sum ;
sum = i + j ; xxx address of printf()
return sum ; 5 copy of a
} 2 copy of b
main( ) FUNCTION
{ CALL STACK
int a = 5, b = 2, c ;
c = add ( a, b ) ;
after control
printf ( "sum = %d", c ) ;
reaches add()
}
add ( int i, int j )
{
int sum ; 7 copy of sum
• BOOKS:
– A.M. Tenenbaum, “Data Structures using C”,
Prentice Hall
– S. Lipschutz, “Theory and Problems of Data
Structures”, McGraw Hill
• ONLINE RESOURCES
– Microsoft MSDN library
Thank You