-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathStackArray.java
More file actions
38 lines (37 loc) · 747 Bytes
/
StackArray.java
File metadata and controls
38 lines (37 loc) · 747 Bytes
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
class StackArray<T>{
T[] data = (T[])new Object[2];
int N; // count;
private void doubleArray(){
T[] newData = (T[]) new Object[data.length*2];
for(int i = 0; i < N; ++i){
newData[i] = data[i];
}
data = newData;
}
private void halfArray(){
T[] newData = (T[]) new Object[data.length/2];
for(int i = 0; i < N; ++i){
newData[i] = data[i];
}
data = newData;
}
T pop(){
if(N == data.length/4) halfArray();
T ret = data[--N];
data[N] = null;
return ret;
}
void push(T item){
if(N == data.length) doubleArray();
data[N] = item;
N++;
}
T[] getArray(){ return data; }
boolean isEmpty(){return N==0;}
T peek(){
return data[N-1];
}
int getLength(){
return N;
}
}