def setUp(self): # Provide an empty stack self.stack = MyStack() # Provide a filled stack self.len_test_data = 5 self.test_data = [i + 1 for i in range(self.len_test_data)] self.filled_stack = MyStack() for i in self.test_data: self.filled_stack.push(i)
def test_is_empty(self): stack = MyStack() self.assertTrue(stack.is_empty()) stack.push(1) self.assertFalse(stack.is_empty()) stack.pop() self.assertTrue(stack.is_empty())
def rpn(expression): # operand: sayi # operation: islem operations = ['+', '*', '-', '/'] elements = expression.split() stack = MyStack() for e in elements: if e in operations: num2 = stack.pop() num1 = stack.pop() if e == '+': result = num1 + num2 elif e == '*': result = num1 * num2 elif e == '-': result = num1 - num2 else: result = num1 / num2 stack.push(result) else: num = int(e) stack.push(num) print(stack.pop())
class MyQueue(): """ Queue implementation using 2 stacks """ def __init__(self): self.latest = MyStack() self.oldest = MyStack() def __len__(self): # Data in Queue should always be in one of the two internal stacks len_latest, len_oldest = len(self.latest), len(self.oldest) if (len_latest > len_oldest): return len_latest return len_oldest def is_empty(self): return self.latest.is_empty() and self.oldest.is_empty() def move(self, from_stack, to_stack): """ Move top element from from_stack (pop) onto to_stack (push) """ to_stack.push(from_stack.pop()) def push(self, data): while (self.oldest.is_empty() != True): self.move(self.oldest, self.latest) self.latest.push(data) def pop(self): while (self.latest.is_empty() != True): self.move(self.latest, self.oldest) return self.oldest.pop()
def main(): """main関数""" mystack = MyStack(STACK_SIZE) # インスタンス化 mystack.pushdown('a') # データ入力 mystack.pushdown('b') mystack.pushdown('c') while (not mystack.isempty()): # データ出力 print(mystack.popup())
class TestMyStack(unittest.TestCase): def setUp(self): # Provide an empty stack self.stack = MyStack() # Provide a filled stack self.len_test_data = 5 self.test_data = [i + 1 for i in range(self.len_test_data)] self.filled_stack = MyStack() for i in self.test_data: self.filled_stack.push(i) def test_instantiation(self): stack = MyStack() self.assertEqual(None, stack.top) self.assertEqual(0, len(self.stack)) def test_push(self): for i in self.test_data: self.stack.push(i) self.assertEqual(i, len(self.stack)) self.assertEqual(i, self.stack.top.key) def test_pop(self): for i in reversed(self.test_data): data = self.filled_stack.pop() self.assertEqual(i - 1, len(self.filled_stack)) self.assertEqual(i, data) def test_peek(self): for i in reversed(self.test_data): data = self.filled_stack.peek() self.assertEqual(i, data) self.filled_stack.pop() def test_is_empty(self): stack = MyStack() self.assertTrue(stack.is_empty()) stack.push(1) self.assertFalse(stack.is_empty()) stack.pop() self.assertTrue(stack.is_empty())
#!/usr/bin/env python3 import os from aws_cdk import core from my_stack import MyStack app = core.App() MyStack(app, "s3-lambda-ecs", env={ "region": "us-east-1", "account": os.environ["CDK_DEFAULT_ACCOUNT"], }) app.synth()
def __init__(self): self.latest = MyStack() self.oldest = MyStack()
def test_instantiation(self): stack = MyStack() self.assertEqual(None, stack.top) self.assertEqual(0, len(self.stack))