← OOP

Implement Stack OOP

Easy
Python
class MyStack:
    def __init__(self): self.data=[]
    def push(self,x): self.data.append(x)
    def pop(self): return self.data.pop()
    def top(self): return self.data[-1]
    def empty(self): return not self.data
Java
class MyStack{
    List<Integer> data=new ArrayList<>();
    public void push(int x){data.add(x);}
    public int pop(){return data.remove(data.size()-1);}
    public int top(){return data.get(data.size()-1);}
    public boolean empty(){return data.isEmpty();}
}

Key Insight

data[-1] vs get(size-1). 'not data' vs isEmpty().

Python → Java Differences

  • self vs implicit this
  • data[-1] vs get(size-1)
  • 'not data' vs isEmpty()
Python
class MyStack:
    def __init__(self): self.data=[]
    def push(self,x): self.data.append(x)
    def pop(self): return self.data.pop()
    def top(self): return self.data[-1]
    def empty(self): return not self.data
Java
class MyStack{
    List<Integer> data=new ArrayList<>();
    public void push(int x){data.add(x);}
    public int pop(){return data.remove(data.size()-1);}
    public int top(){return data.get(data.size()-1);}
    public boolean empty(){return data.isEmpty();}
}

Algorithm Steps

1. List as backing store
2. Implement stack operations