You are on page 1of 8

Stack Data Structure

By : Imam M Shofi

What is stack?

A stack is a limited version of an


array.
New elements, or nodes as they are
often called, can be added to a stack
and removed from a stack only from
one end.
Access system a stack is referred to
as a LIFO structure (Last-In First-Out)
Some illustrations:

stack of satay

stack of CDs

Stacks operations

Push

: adds a new node

Push(X,S) add the value X to the TOP of stack

Pop : removes a node


Pop(S) removes the TOP node and returns its
value

IsEmpty
empty

: reports whether the stack is

IsEmpty(S) report whether the stack S is empty

IsFull

: reports whether the stack is full

IsFull(S) report whether the stack S is full

Initialize

: creates/initializes the stack

Initialize(S) create a new empty stack named S

Destroy : deletes the contents of the


stack (may be implemented by reinitializing the stack)
Destroy(S) deletes the contents of the stack S

Illustration/example
Operation

Stacks contents

TOP value

1. Initialiaze(S)

<empty>

2. Push(a,S)
3. Push(b,S)
4. Push(c,S)
5. Pop(S)
6. Push(d,S)
7. Push(e,S)
8. Pop(S)
9. Pop(S)
10. Pop(S)

a
ab
abc
ab
abd
abde
abd
ab
a

1
2
3
2
3
4
3
2
1

Exercise

What would the state of the stack be after the


following operations:
create stack
push A onto stack
push F onto stack
pop item from stack
push B onto stack
pop item from stack
pop item from stack
Show the state of the stack and the value of each
variable after execution of each of the following
statements:
A=5
B=3
C=7

(a)
create stack
push A onto stack
push C*C onto stack
pop item from stack and store in B
push B+A onto stack
pop item from stack and store in A
pop item from stack and store in B

(b)
create stack
push B onto stack
push C onto stack
push A onto stack
A=B*C
push A+C onto stack
pop item from stack and store in A
pop item from stack and store in B
pop item from stack and store in C

Converting between notations

INFIX to PREFIX : (A+B) (C*D)

INFIX to POSTFIX : (A+B) (C*D)

Do the first brace: (A+B), the PREFIX is +AB


Do the second brace: (C*D), the PREFIX is *CD
The end is operator -: +AB - *CD,
the PREFIX is -+AB*CD
Do the first brace: (A+B), the POSTFIX is AB+
Do the second brace: (C*D), the POSTFIX is CD*
The end is operator -: AB+ - CD*,
the PREFIX is AB+CD*-

PREFIX to INFIX : +/*A B C D

Find the first operator: *, take 2 operands before the


operator (A and B), the INFIX is (A*B)
Find the second operator: /, take 2 operands before the
operator (A*B and C), the INFIX is ((A*B)/C)
Find the third operator: +, take 2 operands before the
operator (((A*B)/C) and D), the INFIX is ((A*B)/C)+D

Converting between notations(2)

PREFIX to POSTFIX : +/*A B C D

POSTFIX to INFIX : ABCD*/

Find the first operator: *, take 2 operands before the


operator (A and B), the POSTFIX is AB*
Find the second operator: /, take 2 operands before the
operator (AB* and C), the POSTFIX is AB*C/
Find the third operator: +, take 2 operands before the
operator (AB*C/ and D), the POSTFIX is AB*C/D+
Find the first operator: *, take 2 operands before the
operator (C and D), the INFIX is (C*D)
Find the second operator: /, take 2 operands before the
operator ((C*D) and B), the INFIX is (B/(C*D)
Find the third operator: -, take 2 operands before the
operator ((B/(C*D) and A), the INFIX is A (B/(C*D)

POSTFIX to PREFIX : ABCD*/

Find the first operator: *, take 2 operands before the


operator (C and D), the PREFIX is *CD
Find the second operator: /, take 2 operands before the
operator (*CD and B), the PREFIX is /B*CD
Find the third operator: -, take 2 operands before the
operator (/B*CD and A), the PREFIX is -A /B*CD

Exercise: Converting
Convert these INFIX to PREFIX and POSTFIX :

1.
a)
b)
c)

A/BC/D
(A + B) ^ 3 C * D
A ^ (B + C)

Convert these PREFIX to INFIX and POSTFIX :

2.
a)
b)
c)

+ /AB C ^ D E
+DE/XY
^+23CD

Convert these POSTFIX to INFIX and PREFIX :

3.
a)
b)
c)

ABC+
GH+IJ/*
AB^CD+