def test_pop_two_element(self):
     stack = Stack()
     stack.push(1)
     stack.push(2)
     self.assertEqual(stack.pop(), 2, "We should pop 2")
     self.assertEqual(stack.peek(), 1)
     self.assertEqual(stack.size(), 1)
     self.assertEqual(stack.pop(), 1, "We should pop 1")
     self.assertEqual(stack.size(), 0)
Ejemplo n.º 2
0
def is_balanced(brackets):
    brackets = brackets.strip()
    if brackets == '':
        raise Exception("The string is empty")
    if '(' not in brackets and ')' not in brackets:
        raise Exception("This string without brackets")
    stack = Stack()
    for bracket in brackets:
        if bracket == ')' and stack.is_empty():
            print(
                "The string is started with closed bracket and it is  not balanced"
            )
            return False
        elif bracket == '(':
            stack.push(bracket)
        elif bracket == ')':
            stack.pop()
        else:
            raise Exception("This string has something else but brackets")
    if stack.is_empty():
        print("The string is balanced")
        return True
    else:
        print("The string is not balanced")
        return False
 def test_pop_one_element(self):
     stack = Stack()
     stack.push(1)
     stack.pop()
     self.assertEqual(stack.tail, None)
     self.assertEqual(stack.head, None)
     self.assertEqual(stack.size(), 0)
def calculate_postfix(expression):
    S = Stack()
    if not expression:
        raise Exception("The string is empty")
    for item in expression:
        if item.isdigit():
            S.push(int(item))
        elif item == "+":
            val1 = S.pop()
            val2 = S.pop()
            S.push(val1 + val2)
        elif item == "*":
            val1 = S.pop()
            val2 = S.pop()
            S.push(val1 * val2)
        elif item == "-":
            val1 = S.pop()
            val2 = S.pop()
            S.push(val1 - val2)
        elif item == "/":
            val1 = S.pop()
            val2 = S.pop()
            S.push(val1 / val2)

        elif item == "=":
            return S.pop()
    return S.pop()
 def __init__(self):
     Stack.__init__(self)
 def size(self):
     return Stack.size(self)
 def getTail(self):
     return Stack.get_tail(self)
 def getFront(self):
     return Stack.get_head(self)
 def removeTail(self):
     return Stack.pop(self)
 def addTail(self, item):
     Stack.push(self,item)
 def test_stack_peek(self):
     stack = Stack()
     stack.push(77)
     stack.push(123)
     self.assertEqual(stack.peek(), 123, "We should peek 123")
     self.assertEqual(stack.pop(), 123, "We hsould pop 123")
     self.assertEqual(stack.peek(), 77, "We should peek 77")
     self.assertEqual(stack.pop(), 77, "We should pop 77")
     self.assertEqual(stack.size(), 0)
     self.assertIsNone(stack.peek(), "peek is none")
 def test_peek_empty(self):
     stack = Stack()
     self.assertIsNone(stack.peek(), "peek is none")
Ejemplo n.º 13
0
 def enqueue(self, item):  #need to add element to the end of the list
     Stack.push(self, item)
Ejemplo n.º 14
0
 def __init__(self):
     Stack.__init__(self)  #initialize with stack end