-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathArrayStack.java
More file actions
84 lines (60 loc) · 1.72 KB
/
ArrayStack.java
File metadata and controls
84 lines (60 loc) · 1.72 KB
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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
public class ArrayStack{
int arraySize;
private char[] store;
int top;
public ArrayStack(){
arraySize = 5;
store = new char[arraySize];
top = -1;
}
private void resize(){
char[] storeCopy = store;
store = new char[arraySize * 2];
for(int i = 0; i < arraySize; i++){
store[i] = storeCopy[i];
}
arraySize *= 2;
}
/** Adds a new entry to the top of this stack.
* @param newEntry An int to be added to the stack. */
public void push(char newEntry){
if(top + 1 == arraySize){
resize();
}
top++;
store[top] = newEntry;
}
/** Removes and returns this stack's top entry.
* @return The int at the top of the stack.
* @throws EmptyStackException if the stack is empty before the operation. */
public char pop(){
if(isEmpty()){
throw new EmptyStackException();
}
char topEntry = store[top];
store[top] = 0;
top--;
return topEntry;
}
/** Retrieves this stack's top entry.
* @return The int at the top of the stack.
* @throws EmptyStackException if the stack is empty. */
public int peek(){
if(isEmpty()){
throw new EmptyStackException();
}
return store[top];
}
/** Detects whether this stack is empty.
* @return True if the stack is empty. */
public boolean isEmpty(){
return (top == -1);
}
/** Removes all entries from this stack */
public void clear(){
for(int i = 0; i <= top; i++){
store[i] = 0;
}
top = -1;
}
}