Function for implementation of two stacks using single array
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 | class twoStacks: def __init__(self, n): #constructor self.size = n self.arr = [None] * n self.top1 = -1 self.top2 = self.size # Method to push an element x to stack1 def push1(self, x): # There is at least one empty space for new element if self.top1 < self.top2 - 1 : self.top1 = self.top1 + 1 self.arr[self.top1] = x else: print("Overflow Condition") exit(1) # Method to push an element x to stack2 def push2(self, x): # There is at least one empty space for new element if self.top1 < self.top2 - 1: self.top2 = self.top2 - 1 self.arr[self.top2] = x else : print("Overflow Condition") exit(1) # Method to pop an element from first stack def pop1(self): if self.top1 >= 0: x = self.arr[self.top1] self.top1 = self.top1 -1 return x else: print("Underflow Condition") exit(1) # Method to pop an element from second stack def pop2(self): if self.top2 < self.size: x = self.arr[self.top2] self.top2 = self.top2 + 1 return x else: print("Underflow Condition") exit() # Driver program to test twoStacks class ts = twoStacks(5) ts.push1(5) ts.push2(10) ts.push2(15) ts.push1(11) ts.push2(7) print("Popped element from stack1 is " + str(ts.pop1())) ts.push2(40) print("Popped element from stack2 is " + str(ts.pop2())) |