Could you please solve these 3 part python(on pydev) functions of this question without class stacks because I was able to solve it. So just the functions themselves and include the returns of each 3 without the usage of print inside the functions themselves
-------------------------------------------------------------------------------------------------------------------------------------------------------
1) Write and test the following functions that use Stack
a)
This method extends the Stack class definition. The code must be different from that of the previous question as you should be coding it at the lowest possible level. i.e. you should be working directly with _values for the stack involved. Your method must not call the stack interface methods: push, pop, is_empty, and peek. You should use the internal Stack elements such as _values. (Note that this means that you should not use self.pop(), but you can use self._values.pop().) Note that the Use example is different than that of the previous question.
Hint: if your code for the previous question and this question are identical, you're doing it wrong. However, the sample results should be the same as for the previous question.
def reverse(self):
"""
-------------------------------------------------------
Reverses the contents of the source stack.
Use: source.reverse()
-------------------------------------------------------
Returns:
None
-------------------------------------------------------
"""
b)
The function must use a single stack to do its work.
In a postfix expression, operators follow operands. Thus the infix expression:
12 - 5
is written as postfix expression:
12 5 -
which evaluates to 7.
In postfix expressions as the operations are performed in the order that they appear. The expression:
4 5 + 12 * 2 3 * -
is equivalent to (4 + 5) * 12 - 2 * 3 and evaluates to 102.
The algorithm for evaluation postfix expressions is:
Create a stack to store operands (i.e. values)
Walk through the expression string element by element:
If the element is a number, push it into the stack
If the element is a operator, pop operands for the operator from stack. Evaluate the operator with the top element on the right of the operator and the next element on the left of the operator, and push the result back to the stack
When the expression is finished, the number on the top of the stack is the final answer. The stack should be empty after this number is popped.
# Constants
OPERATORS = "+-*/"
def postfix(string):
"""
-------------------------------------------------------
Evaluates a postfix expression.
Use: answer = postfix(string)
-------------------------------------------------------
Parameters:
string - the postfix string to evaluate (str)
Returns:
answer - the result of evaluating string (float)
-------------------------------------------------------
"""
c)
This function uses a stack, meaning you may manipulate the stack using only the stack interface methods: push, pop, is_empty, and peek. You may not use or refer to the internal Stack elements such as _values.
def stack_maze(maze):
"""
-------------------------------------------------------
Solves a maze using Depth-First search.
Use: path = stack_maze(maze)
-------------------------------------------------------
Parameters:
maze - dictionary of points in a maze, where each point
represents a corridor end or a branch. Dictionary
keys are the name of the point followed by a list of
branches, if any. First point is named 'Start', exit
is named 'X' (dict)
Returns:
path - list of points visited before the exit is reached,
None if there is no exit (list of str)
-------------------------------------------------------
"""