하나의 배열 안에 두 개의 스택이 존재합니다.
두 개의 스택을 개별 스택으로 생각합니다.
한 방향에서 데이터의 삽입과 삭제를 할 수 있도록 LIFO 구조로 push, pop 기능을 개별 스택에 구현했습니다.
public class TwoStack<T> {
private int maxSize;
private int topA, topB;
private T[] array;
public TwoStack(int maxSize) {
this.maxSize = maxSize;
this.topA = -1;
this.topB = maxSize;
array = (T[]) new Object[maxSize];
}
public void pushA(T data) {
if (topA < topB - 1) {
array[++topA] = data;
}
}
public void pushB(T data) {
if (topA < topB - 1) {
array[--topB] = data;
}
}
public T popA() {
if (topA > -1) {
T remove = array[topA];
array[topA--] = null;
return remove;
}
return null;
}
public T popB() {
if (topB < maxSize) {
T remove = array[topB];
array[topB++] = null;
return remove;
}
return null;
}
[Queue] 기본 구현 enqueue, dequeue (0) | 2020.04.04 |
---|---|
[Queue] reverse k (0) | 2020.04.04 |
[Stack] 배열 구현 (0) | 2020.03.30 |
[Linked list] 리스트 결합과 데이터 중복 삭제 (0) | 2020.03.29 |
[Linked list] 이중 연결리스트 꼬리 노드 (0) | 2020.03.26 |
댓글 영역