Sie sind auf Seite 1von 83

Stack ADT

Operations
Push, Pop, Top, isEmpty

Application: Expression Evaluation


Arithmetic Expression Infix-to-Postfix Postfix to Quadruples Boolean Expressions (Assignment #1) Infix-to-Postfix Postfix to Quadruples

Implementing a Stack
Using Vector /Array
requires estimate of maximum list length may grow dynamically = empty slots Can contain varied data/objects (not necessarily homogeneous)
300 212 rules! Golf #1

top

Implementing a Stack
Using Linked List
flexible, adjusts to problem size implementing a linked list
nodes and references/links/pointers top
Golf #1 212 rules!

300

Implementing a Stack
Using Linked List
implementing a linked list
cursor implementation 0
212 rules!

1
2 3 4

-1
7 -1 1 4

300 Golf #1

top = 5

freelist = 8

6
7 8

3
6 0

Implementing a Stack
push pop top/peek isEmpty

Vector/Array O(1)* O(1) O(1) O(1)

Linked List O(1) O(1) O(1) O(1)

*assuming no need for Vector/Array expansion

Infix to Postfix
infix expression: z = a * ( x + y ) + z * c ^ ( 2 ( d + w ) ) / x ;
postfix expression:

Infix to Postfix
infix expression: z = a * ( x + y ) + z * c ^ ( 2 ( d + w ) ) / x ;
postfix expression: z

Infix to Postfix
infix expression: z = a * ( x + y ) + z * c ^ ( 2 ( d + w ) ) / x ;
postfix expression: z

= @

Infix to Postfix
infix expression: z = a * ( x + y ) + z * c ^ ( 2 ( d + w ) ) / x ;
postfix expression: z a

= @

Infix to Postfix
infix expression: z = a * ( x + y ) + z * c ^ ( 2 ( d + w ) ) / x ;
postfix expression: z a

* = @

Infix to Postfix
infix expression: z = a * ( x + y ) + z * c ^ ( 2 ( d + w ) ) / x ;
postfix expression: z a

(
* = @

Infix to Postfix
infix expression: z = a * ( x + y ) + z * c ^ ( 2 ( d + w ) ) / x ;
postfix expression: z a x

(
* = @

Infix to Postfix
infix expression: z = a * ( x + y ) + z * c ^ ( 2 ( d + w ) ) / x ;
postfix expression: z a x

+ (
* = @

Infix to Postfix
infix expression: z = a * ( x + y ) + z * c ^ ( 2 ( d + w ) ) / x ;
postfix expression: z a x y

+ (
* = @

Infix to Postfix
infix expression: z = a * ( x + y ) + z * c ^ ( 2 ( d + w ) ) / x ;
postfix expression: z a x y +

(
* = @

Infix to Postfix
infix expression: z = a * ( x + y ) + z * c ^ ( 2 ( d + w ) ) / x ;
postfix expression: z a x y +

* = @

Infix to Postfix
infix expression: z = a * ( x + y ) + z * c ^ ( 2 ( d + w ) ) / x ;
postfix expression: z a x y + *

= @

Infix to Postfix
infix expression: z = a * ( x + y ) + z * c ^ ( 2 ( d + w ) ) / x ;
postfix expression: z a x y + *

+
= @

Infix to Postfix
infix expression: z = a * ( x + y ) + z * c ^ ( 2 ( d + w ) ) / x ;
postfix expression: z a x y + * z

+
= @

Infix to Postfix
infix expression: z = a * ( x + y ) + z * c ^ ( 2 ( d + w ) ) / x ;
postfix expression: z a x y + * z

* +
= @

Infix to Postfix
infix expression: z = a * ( x + y ) + z * c ^ ( 2 ( d + w ) ) / x ;
postfix expression: z a x y + * z c

* +
= @

Infix to Postfix
infix expression: z = a * ( x + y ) + z * c ^ ( 2 ( d + w ) ) / x ;
postfix expression: z a x y + * z c

^ * +
= @

Infix to Postfix
infix expression: z = a * ( x + y ) + z * c ^ ( 2 ( d + w ) ) / x ;
postfix expression: z a x y + * z c

( ^ * +
= @

Infix to Postfix
infix expression: z = a * ( x + y ) + z * c ^ ( 2 ( d + w ) ) / x ;
postfix expression: z a x y + * z c 2

( ^ * +
= @

Infix to Postfix
infix expression: z = a * ( x + y ) + z * c ^ ( 2 ( d + w ) ) / x ;
postfix expression: z a x y + * z c 2 ( ^ * +
= @

Infix to Postfix
infix expression: z = a * ( x + y ) + z * c ^ ( 2 ( d + w ) ) / x ;
postfix expression: z a x y + * z c 2

( ( ^ * +
= @

Infix to Postfix
infix expression: z = a * ( x + y ) + z * c ^ ( 2 ( d + w ) ) / x ;
postfix expression: z a x y + * z c 2 ~ ( ( ^ * +
= @

Infix to Postfix
infix expression: z = a * ( x + y ) + z * c ^ ( 2 ( d + w ) ) / x ;
postfix expression: z a x y + * z c 2 d ~ ( ( ^ * +
= @

Infix to Postfix
infix expression: z = a * ( x + y ) + z * c ^ ( 2 ( d + w ) ) / x ;
postfix expression: z a x y + * z c 2 d ~ ( ( ^ * +
= @

Infix to Postfix
infix expression: z = a * ( x + y ) + z * c ^ ( 2 ( d + w ) ) / x ;
postfix expression: z a x y + * z c 2 d ~

( ( ^ * +
= @

Infix to Postfix
infix expression: z = a * ( x + y ) + z * c ^ ( 2 ( d + w ) ) / x ;
postfix expression: z a x y + * z c 2 d ~ + ( ( ^ * +
= @

Infix to Postfix
infix expression: z = a * ( x + y ) + z * c ^ ( 2 ( d + w ) ) / x ;
postfix expression: z a x y + * z c 2 d ~ w + ( ( ^ * +
= @

Infix to Postfix
infix expression: z = a * ( x + y ) + z * c ^ ( 2 ( d + w ) ) / x ;
postfix expression: z a x y + * z c 2 d ~ w + ( ( ^ * +
= @

Infix to Postfix
infix expression: z = a * ( x + y ) + z * c ^ ( 2 ( d + w ) ) / x ;
postfix expression: z a x y + * z c 2 d ~ w +

( ( ^ * +
= @

Infix to Postfix
infix expression: z = a * ( x + y ) + z * c ^ ( 2 ( d + w ) ) / x ;
postfix expression: z a x y + * z c 2 d ~ w +

( ( ^ * +
= @

Infix to Postfix
infix expression: z = a * ( x + y ) + z * c ^ ( 2 ( d + w ) ) / x ;
postfix expression: z a x y + * z c 2 d ~ w + ( ^ * +
= @

Infix to Postfix
infix expression: z = a * ( x + y ) + z * c ^ ( 2 ( d + w ) ) / x ;
postfix expression: z a x y + * z c 2 d ~ w + ( ^ * +
= @

Infix to Postfix
infix expression: z = a * ( x + y ) + z * c ^ ( 2 ( d + w ) ) / x ;
postfix expression: z a x y + * z c 2 d ~ w +

( ^ * +
= @

Infix to Postfix
infix expression: z = a * ( x + y ) + z * c ^ ( 2 ( d + w ) ) / x ;
postfix expression: z a x y + * z c 2 d ~ w +

^ * +
= @

Infix to Postfix
infix expression: z = a * ( x + y ) + z * c ^ ( 2 ( d + w ) ) / x ;
postfix expression: z a x y + * z c 2 d ~ w +

^ * +
= @

Infix to Postfix
infix expression: z = a * ( x + y ) + z * c ^ ( 2 ( d + w ) ) / x ;
postfix expression: z a x y + * z c 2 d ~ w + ^

* +
= @

Infix to Postfix
infix expression: z = a * ( x + y ) + z * c ^ ( 2 ( d + w ) ) / x ;
postfix expression: z a x y + * z c 2 d ~ w + ^ *

+
= @

Infix to Postfix
infix expression: z = a * ( x + y ) + z * c ^ ( 2 ( d + w ) ) / x ;
postfix expression: z a x y + * z c 2 d ~ w + ^ *

/ +
= @

Infix to Postfix
infix expression: z = a * ( x + y ) + z * c ^ ( 2 ( d + w ) ) / x ;
postfix expression: z a x y + * z c 2 d ~ w + ^ * x

/ +
= @

Infix to Postfix
infix expression: z = a * ( x + y ) + z * c ^ ( 2 ( d + w ) ) / x ;
postfix expression: z a x y + * z c 2 d ~ w + ^ * x

/ +
= @

Infix to Postfix
infix expression: z = a * ( x + y ) + z * c ^ ( 2 ( d + w ) ) / x ;
postfix expression: z a x y + * z c 2 d ~ w + ^ * x /

+
= @

Infix to Postfix
infix expression: z = a * ( x + y ) + z * c ^ ( 2 ( d + w ) ) / x ;
postfix expression: z a x y + * z c 2 d ~ w + ^ * x / +

= @

Infix to Postfix
infix expression: z = a * ( x + y ) + z * c ^ ( 2 ( d + w ) ) / x ;
postfix expression: z a x y + * z c 2 d ~ w + ^ * x / + =

Infix to Postfix
infix expression: z = a * ( x + y ) + z * c ^ ( 2 ( d + w ) ) / x ;
postfix expression: z a x y + * z c 2 d ~ w + ^ * x / + =

Postfix to Quadruples
postfix expression: z a x y + * z c 2 d ~ w + ^ * x / + =

Postfix to Quadruples
postfix expression: z a x y + * z c 2 d ~ w + ^ * x / + =

a z

Postfix to Quadruples
postfix expression: z a x y + * z c 2 d ~ w + ^ * x / + =

x a z

Postfix to Quadruples
postfix expression: z a x y + * z c 2 d ~ w + ^ * x / + =

y x a z

Postfix to Quadruples
postfix expression: z a x y + * z c 2 d ~ w + ^ * x / + =

y x a z

Postfix to Quadruples
postfix expression: z a x y + * z c 2 d ~ w + ^ * x / + = + x y t0

t0 a z

Postfix to Quadruples
postfix expression: z a x y + * z c 2 d ~ w + ^ * x / + = + x y t0

t0 a z

Postfix to Quadruples
postfix expression: z a x y + * z c 2 d ~ w + ^ * x / + = + * x a y t0 t0 t1

t1 z

Postfix to Quadruples
postfix expression: z a x y + * z c 2 d ~ w + ^ * x / + = + * x a y t0 t0 t1

z t1 z

Postfix to Quadruples
postfix expression: z a x y + * z c 2 d ~ w + ^ * x / + = + * x a y t0 t0 t1

c z t1 z

Postfix to Quadruples
postfix expression: z a x y + * z c 2 d ~ w + ^ * x / + = + * x a y t0 t0 t1

2 c z t1 z

Postfix to Quadruples
postfix expression: z a x y + * z c 2 d ~ w + ^ * x / + = + * x a y t0 t0 t1

d 2 c z t1 z

Postfix to Quadruples
postfix expression: z a x y + * z c 2 d ~ w + ^ * x / + = + * x a y t0 t0 t1

d 2 c z t1 z

Postfix to Quadruples
postfix expression: z a x y + * z c 2 d ~ w + ^ * x / + = + * ~ t2 2 c z t1 z x a d y t0 t0 t1 t2

Postfix to Quadruples
postfix expression: z a x y + * z c 2 d ~ w + ^ * x / + = + * ~ w t2 2 c z t1 z x a d y t0 t0 t1 t2

Postfix to Quadruples
postfix expression: z a x y + * z c 2 d ~ w + ^ * x / + = + * ~ w t2 2 c z t1 z x a d y t0 t0 t1 t2

Postfix to Quadruples
postfix expression: z a x y + * z c 2 d ~ w + ^ * x / + = + * ~ + t3 2 c z t1 z x y a t0 d t2 w t0 t1 t2 t3

Postfix to Quadruples
postfix expression: z a x y + * z c 2 d ~ w + ^ * x / + = + * ~ + t3 2 c z t1 z x y a t0 d t2 w t0 t1 t2 t3

Postfix to Quadruples
postfix expression: z a x y + * z c 2 d ~ w + ^ * x / + = + * ~ + t4 c z t1 z x y a t0 d t2 2 w t3 t0 t1 t2 t3 t4

Postfix to Quadruples
postfix expression: z a x y + * z c 2 d ~ w + ^ * x / + = + * ~ + t4 c z t1 z x y a t0 d t2 w w t3 t0 t1 t2 t3 t4

Postfix to Quadruples
postfix expression: z a x y + * z c 2 d ~ w + ^ * x / + = + * ~ + ^ t5 z t1 z x a d t2 w c y t0 t0 t1 t2 w t3 t3 t4 t4 t5

Postfix to Quadruples
postfix expression: z a x y + * z c 2 d ~ w + ^ * x / + = + * ~ + ^ t5 z t1 z x a d t2 w c y t0 t0 t1 t2 w t3 t3 t4 t4 t5

Postfix to Quadruples
postfix expression: z a x y + * z c 2 d ~ w + ^ * x / + = + * ~ + ^ * x a d t2 w c Z y t0 t0 t1 t2 w t3 t3 t4 t4 t5 t5 t6

t6 t1 z

Postfix to Quadruples
postfix expression: z a x y + * z c 2 d ~ w + ^ * x / + = + * ~ + ^ * x a d t2 w c Z y t0 t0 t1 t2 w t3 t3 t4 t4 t5 t5 t6

x t6 t1 z

Postfix to Quadruples
postfix expression: z a x y + * z c 2 d ~ w + ^ * x / + = + * ~ + ^ * x a d t2 w c Z y t0 t0 t1 t2 w t3 t3 t4 t4 t5 t5 t6

x t6 t1 z

Postfix to Quadruples
postfix expression: z a x y + * z c 2 d ~ w + ^ * x / + = + * ~ + ^ * / x a d t2 w c Z t6 y t0 t0 t1 t2 w t3 t3 t4 t4 t5 t5 t6 x t7

t7 t1 z

Postfix to Quadruples
postfix expression: z a x y + * z c 2 d ~ w + ^ * x / + = + * ~ + ^ * / x a d t2 w c Z t6 y t0 t0 t1 t2 w t3 t3 t4 t4 t5 t5 t6 x t7

t7 t1 z

Postfix to Quadruples
postfix expression: z a x y + * z c 2 d ~ w + ^ * x / + = + * ~ + ^ * / + x a d t2 w c Z t6 t1 y t0 t0 t1 t2 w t3 t3 t4 t4 t5 t5 t6 x t7 t7 t8

t8 z

Postfix to Quadruples
postfix expression: z a x y + * z c 2 d ~ w + ^ * x / + = + * ~ + ^ * / + x a d t2 w c Z t6 t1 y t0 t0 t1 t2 w t3 t3 t4 t4 t5 t5 t6 x t7 t7 t8

t8 z

Postfix to Quadruples
postfix expression: z a x y + * z c 2 d ~ w + ^ * x / + = + * ~ + ^ * / + = x a d t2 w c Z t6 t1 t8 y t0 t0 t1 t2 w t3 t3 t4 t4 t5 t5 t6 x t7 t7 t8 z

Postfix to Quadruples
postfix expression: z a x y + * z c 2 d ~ w + ^ * x / + = + * ~ + ^ * / + x a d t2 w c Z t6 t1 y t0 t0 t1 t2 w t3 t3 t4 t4 t5 t5 t6 x t7 t7 t8

t8 z

Postfix to Quadruples
postfix expression: z a x y + * z c 2 d ~ w + ^ * x / + = + * ~ + ^ * / + = x a d t2 w c Z t6 t1 t8 y t0 t0 t1 t2 w t3 t3 t4 t4 t5 t5 t6 x t7 t7 t8 z

Postfix to Quadruples
postfix expression: z a x y + * z c 2 d ~ w + ^ * x / + = + * ~ + ^ * / + = x a d t2 w c Z t6 t1 t8 y t0 t0 t1 t2 w t3 t3 t4 t4 t5 t5 t6 x t7 t7 t8 z

Postfix to Quadruples
infix expression: z = a * ( x + y ) + z * c ^ ( 2 ( d + w ) ) / x ; --- t0 ---t2+ x y t0 ----- t1 --------- t3 ---* a t0 t1 -------- t4 ------------------ t5 ----------~ d t2 -------------- t6 ------------+ t2 w t3 ----------------- t7 -------------- w t3 t4 ---------------------- t8 --------------------------^ c t4 t5 * Z t5 t6 / t6 x t7 + t1 t7 t8 = t8 z postfix expression: z a x y + * z c 2 d ~ w + ^ * x / + =

Das könnte Ihnen auch gefallen