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
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();}
}
data[-1] vs get(size-1). 'not data' vs isEmpty().
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
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();}
}
1. List as backing store 2. Implement stack operations