Search This Blog

Friday, March 21, 2014

Describe how you could use a single array to implement three stacks.

__author__ = 'nitin'

class Stack:
    def __init__(self):
        self.stack_size=300
        self.items=[0]* self.stack_size * 3
        self.stack_pointer=[0,0,0]

    def push(self,stack_num,item):
        index=stack_num * self.stack_size + self.stack_pointer[stack_num] + 1
        self.stack_pointer[stack_num]+=1
        self.items[index]=item

    def pop(self,stack_num):
        index=stack_num * self.stack_size + self.stack_pointer[stack_num]
        self.stack_pointer[stack_num] -=1
        value=self.items[index]
        self.items[index]=0
        print value
        return value

    def peek(self,stack_num):
        index=stack_num * self.stack_size + self.stack_pointer[stack_num]
        return self.items[index]

    def isEmpty(self,stack_num):
        return self.stack_pointer[stack_num] == stack_num*self.stack_size

if __name__=='__main__':
    s=Stack()
    s.push(0,1)
    s.push(1,1)
    s.push(2,1)
    s.pop(0)
    s.pop(1)
    s.pop(2)

No comments:

My Profile

My photo
can be reached at 09916017317