コード例 #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()
コード例 #2
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
コード例 #3
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)
コード例 #4
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)