栈:
class Stack<T> {
/**
* 存储数据
*/
private Object[] data;
/**
* 栈顶值及元素个数
*/
private int top = 0;
public Stack() {
//随意指定,只为说明原理
data = new Object[100];
top = 0;
}
/**
* 压栈
*
* @param t
*/
public synchronized void push(T t) {
data[top++] = t;
}
/**
* 出栈
*
* @return
*/
public synchronized T pop() {
if (top <= 0) {
return null;
}
T t = (T) data[--top];
return t;
}
/**
* 获取元素数
*
* @return
*/
public int getSize() {
return top < 0 ? 0 : top;
}
}
队列:
class Queue<T> {
/**
* 存储数据
*/
private Object[] data;
/**
* 队列头,队列尾
*/
private int head = 0, tail = 0;
public Queue() {
//随意指定,只为说明原理
data = new Object[100];
head = 0;
tail = 0;
}
/**
* 入队
*
* @param t
*/
public synchronized void enqueue(T t) {
data[tail++] = t;
}
/**
* 出队
*
* @return
*/
public synchronized T dequeue() {
if (tail <= 0) {
return null;
}
T t = (T) data[head++];
return t;
}
/**
* 获取元素数
*
* @return
*/
public int size() {
return tail - head < 0 ? 0 : tail - head;
}
}