Exemplo n.º 1
0
class StackWithMin(object):
    def __init__(self):
        self.top = None
        self.min = MinStack()

    def pop(self):
        if self.top == None:
            raise SystemExit("Empty Stack")
        item = self.top.data
        self.top = self.top.next
        self.min.pop()
        return item

    def push(self, data):
        new_top = Node(data)
        new_top.next = self.top
        self.top = new_top
        self.min.push(data)

    def peek(self):
        if self.top == None:
            raise SystemExit("Empty Stack")
        else:
            return self.top.data

    def get_min(self):
        return self.min.peek()
Exemplo n.º 2
0
def main():
    stack = MinStack()
    stack.push(1)
    stack.push(2)
    stack.push(3)

    print('Minimalna wartosc na stosie: {}'.format(stack.get_min_value()))
Exemplo n.º 3
0
  def test_push(self):
    # Given
    minStack = MinStack()
    minStack.push(None)
    minStack.push(-2)
    minStack.push(0)
    minStack.push(-3)
    minStack.push(None)
    minStack.push(None)
    minStack.push(None)

    expected_output = [None, -2,0,-3,None,None,None]
    self.assertEqual(minStack.data, expected_output)
Exemplo n.º 4
0
  def test_getmin(self):
    minStack = MinStack()
    minStack.push(None)
    minStack.push(-2)
    minStack.push(0)
    minStack.push(-3)
    minStack.push(None)
    minStack.push(None)
    minStack.push(None)

    self.assertEqual(-3, minStack.getMin())
Exemplo n.º 5
0
  def test_pop(self):
    # Given
    # [1, 2, 3, 4, 5, 6, 7]
    minStack = MinStack()
    minStack.push(1)
    minStack.push(2)
    minStack.push(3)
    minStack.push(4)
    minStack.push(5)
    minStack.push(6)
    minStack.push(7)

    expected_output = [2, 3, 4, 5, 6, 7]

    minStack.pop()
    self.assertEqual(expected_output, minStack.data)
Exemplo n.º 6
0
  def test_top(self):
    # Given
    # [1, 2, 3, 4, 5, 6, 7]
    minStack = MinStack()
    minStack.push(1)
    minStack.push(2)
    minStack.push(3)
    minStack.push(4)
    minStack.push(5)
    minStack.push(6)
    minStack.push(7)

    expected_output = 7
    self.assertEqual(minStack.top(), expected_output)
Exemplo n.º 7
0
 def __init__(self):
     self.top = None
     self.min = MinStack()
Exemplo n.º 8
0
 def setUp(self):
     self.stack = MinStack()
     self.stack.push(2)
     self.stack.push(1)
Exemplo n.º 9
0
class TestMinStack(unittest.TestCase):
    def setUp(self):
        self.stack = MinStack()
        self.stack.push(2)
        self.stack.push(1)

    def test_push(self):
        self.stack.push(3)
        self.assertEqual(self.stack.stack[-1], 3)

    def test_pop(self):
        self.stack.pop()
        self.assertEqual(self.stack.stack[-1], 2)

    def test_top(self):
        self.assertEqual(self.stack.top(), 1)

    def test_getMin(self):
        self.assertEqual(self.stack.getMin(), 1)
        self.stack.push(-1000)
        self.assertEqual(self.stack.getMin(), -1000)
Exemplo n.º 10
0
def test_minstack():
    minStack = MinStack()
    minStack.push(-2)
    minStack.push(0)
    minStack.push(-3)
    assert minStack.getMin() == -3
    minStack.pop()
    assert minStack.top() == 0
    assert minStack.getMin() == -2