Data Structures: - Example: Sorting Elements
Data Structures: - Example: Sorting Elements
1 2 3 4 5 6 7 8 9 10
S 5 3 12 0 42 17 2
Top[S]=7
Push (S, x) Pop (S)
my_stack.ads
my_stack.adb
test_stack.adb
1 2 3 4 5 6 7 8 9 10 11 12
Q 67 5 3 12 0 42 7 3
tail[Q]=2 head[Q]=5
(5 + 3) * (10 – 4) 5 3 10 4 - *
• Convert Infix to Postfix
5 * 3 / (7 – 8) 53*78-/
(b * b – 4 * a * c) / (2 * a) bb*4a*c*-2a*/
my_expression_converter.ads
my_expression_converter.adb
converter_test.adb
[use these for this weeks PSET]
Process_Next_Operator
Done := False
loop
If Is_Empty(Op_Stack) or next_op is ‘(‘,
push next_op onto Op_Stack
set Done to True
Elsif precedence(next_op) > precedence(top_operator)
Push next_op onto Op_stack
-- ensures higher precedence operators evaluated first
Set Done to True
Else
Pop the operator_stack
If operator popped is ‘(‘
set Done to True
Else
append operator popped to post_fix string
exit when Done = True
end loop