def balance_parenthesis(bracket): solution_stack = Stack() open_brace = "{([" for paren in bracket: if paren in open_brace: solution_stack.add_item(paren) else: if solution_stack.is_empty() or not is_match( solution_stack.remove_item(), paren): return False if solution_stack.is_empty(): return True else: return False
class TestStack(unittest.TestCase): def test_flow(self): self.test_stack = Stack() self.test_stack.add_item(10) self.test_stack.add_item(20) self.test_stack.add_item(22, 33) assert self.test_stack.pop_item() == 33 assert self.test_stack.pop_item() == 22 assert self.test_stack.count_items() == 2 while self.test_stack.pop_item(): pass assert self.test_stack.count_items() == 0
class TwoStackQueue: def __init__(self): self._old_on_top_stack = Stack() self._new_on_top_stack = Stack() self._zeros = 0 def queue(self, value): new_node = Node(value) self._new_on_top_stack.add_item(new_node) def peek(self): self.check_empty() return self._old_on_top_stack.peek() def dequeue(self): self.check_empty() return self._old_on_top_stack.remove_item() def check_empty(self): if self._old_on_top_stack.is_empty(): while not self._new_on_top_stack.is_empty(): self._old_on_top_stack.add_item( self._new_on_top_stack.remove_item())
from processor import Processor from queue import Queue from task import Task from stack import Stack if __name__ == "__main__": proc = Processor() task_queue = Queue() task_stack = Stack() while True: a = Task() task_queue.add_task(a) if proc.idle_proc(): if not task_queue.get_queue_empty_flag(): proc.add_task(task_queue.del_task()) elif not task_stack.check_is_empty(): proc.add_task(task_stack.del_item()) else: if not task_queue.get_queue_empty_flag(): task_stack.add_item(task_queue.del_task()) print(proc) print(task_stack) print(task_queue) proc.work()