栈:
public class MyStack {
private int[] array;
//栈顶的数组索引
private int top;
/**
* 空参构造
*/
public MyStack(){
array=new int[4];
top=-1;
}
/**
* 指定最大的数组长度
*/
public MyStack(int maxSize){
array=new int[maxSize];
top=-1;
}
/**
* 入栈
* @param i
*/
public void push(int value){
array[++top]=value;
}
/**
* 出栈
* @return
*/
public int pop(){
return array[top--];
}
/**
* 查看栈顶的数
* @return
*/
public int peek(){
return array[top];
}
/**
* 判断是否为空
* @return
*/
public boolean isFull(){
return array.length-1 == top;
}
/**
* 判断是否满
* @return
*/
public boolean isEmpty(){
return top == -1;
}
}
队列:
public class MyQueue {
private int[] array;
//指向队列的头,取数据时使用
private int front;
//指向队列的结尾,存数据时使用
private int end;
//队列的长度,存数据+1,取数据-1
private int elements;
public MyQueue(){
array=new int[5];
front=0;
end=-1;
elements=0;
}
public MyQueue(int maxSize){
array=new int[maxSize];
front=0;
end=-1;
elements=0;
}
/**
* 插入数据
* @param value
*/
public void insert(int value){
array[++end]=value;
elements++;
}
/**
* 取出数据
* @return
*/
public int remove(){
elements--;
return array[front++];
}
/**
* 查看数据
* @return
*/
public int peek(){
return array[front];
}
/**
* 判断队列是否满
* @return
*/
public boolean isFull(){
return array.length == elements;
}
/**
* 判断队列是否为空
* @return
*/
public boolean isEmpty(){
return elements == 0;
}
}
循环队列:
public class MyCycleQueue {
private int[] array;
//指向队列的头,取数据时使用
private int front;
//指向队列的结尾,存数据时使用
private int end;
//队列的长度,存数据+1,取数据-1
private int elements;
public MyCycleQueue(){
array=new int[5];
front=0;
end=-1;
elements=0;
}
public MyCycleQueue(int maxSize){
array=new int[maxSize];
front=0;
end=-1;
elements=0;
}
/**
* 插入数据
* @param value
*/
public void insert(int value){
if (end==array.length-1){
end=-1;
}
array[++end]=value;
elements++;
}
/**
* 取出数据
* @return
*/
public int remove(){
elements--;
int value=array[front++];
if (front==array.length){
front=0;
}
return value;
}
/**
* 查看数据
* @return
*/
public int peek(){
return array[front];
}
/**
* 判断队列是否满
* @return
*/
public boolean isFull(){
return array.length == elements;
}
/**
* 判断队列是否为空
* @return
*/
public boolean isEmpty(){
return elements == 0;
}
}