#!/usr/bin/python3 # ======================================================== # my LIFO queue/stack (because I wanted to) # ======================================================== from copy import deepcopy # -------------------------------------------------------- # ---- my lifo queue/stack # -------------------------------------------------------- class my_lifo_queue: def __init__(self): self.lifo = [] def empty(self): l = len(self.lifo) if l < 1: return True return False def length(self): return(len(self.lifo)) def pop(self): if len(self.lifo) > 0: obj = self.lifo.pop(-1) return obj else: return None def push(self,obj): self.lifo.append(obj) def copy(self): if len(self.lifo) < 1: return None return deepcopy(self.lifo[-1]) def state(self): if len(self.lifo) < 1: return -1 return self.lifo[-1][0] def dump(self): l = len(self.lifo) print(f'lifo length {l}') if l < 1: return top = True # mark top of queue? i = 0 while l: l -= 1 obj = self.lifo[l] if top: print(f'[{i:2}] {obj} (top of queue)') top = False else: print(f'[{i:2}] {obj}') i += 1