Array
push()
if(top==limit-1)
Problem: Stack Full;
else{
top++;
stack[top]=x;
}
时间复杂度:O(1)
pop()
if(top==-1)
Problem: Stack Empty;
else{
temp=stack[top];
top--;
return temp;
}
时间复杂度:O(1)
size()
返回top+1即可
时间复杂度:O(1)
Linked List
push()
StackCell temp = new StackCell(x,null);
temp.next=top;
top=temp;
时间复杂度:O(1)
pop()
if(top==null)
Problem: Stack Empty;
else{
int x=top.data;
top=top.next;
return x;
}
时间复杂度:O(1)
size()
遍历时为O(n),也可也用top记录长度,那样时间复杂度仍为O(1)
时间复杂度:O(n)/O(1)