-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathTwoStack.java
More file actions
56 lines (48 loc) · 937 Bytes
/
TwoStack.java
File metadata and controls
56 lines (48 loc) · 937 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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
package gfg.ds.stack;
/** @noinspection WeakerAccess */
public class TwoStack {
private int[] values;
private int top1;
private int top2;
public TwoStack(int size) {
values = new int[size];
top1 = -1;
top2 = values.length;
}
public boolean isEmpty() {
return top1 == -1 && top2 == values.length;
}
public boolean isFull() {
return top1 + 1 == top2;
}
/**
* t=O(1)
*/
public TwoStack push1(int value) {
assert !isFull() : "Stack is full";
values[++top1] = value;
return this;
}
/**
* t=O(1)
*/
public TwoStack push2(int value) {
assert !isFull() : "Stack is full";
values[--top2] = value;
return this;
}
/**
* t=O(1)
*/
public int pop1() {
assert !isEmpty() : "Stack is empty";
return values[top1--];
}
/**
* t=O(1)
*/
public int pop2() {
assert !isEmpty() : "Stack is empty";
return values[top2++];
}
}