棧:先進後出,實現:定義一個數組,並定義top,指向棧頂,刪除與查看操作從top開始。
class Stack{
private int maxSize;
private int stackArray[];
private int top;
public Stack(int maxSize){
this.maxSize = maxSize;
stackArray = new int[maxSize];
top = -1;
}
/**
* 增
*/
public void add(int num){
stackArray[++top]= num;
}
/**
* 刪
*/
public void del(){
stackArray[top--];
}
/**
* 改
*/
public void set(int num){
stackArray[top]=num;
}
/**
* 查
*/
public int sel(){
return stackArray[top--];
}
/**
* 判斷是否爲空
*/
public boolean isEmpty(){
return (top==-1);
}
/**
* 判斷棧是否滿了
*/
public boolean isFull(){
return (top==maxSize-1);
}
}
循環隊列:先進先出,實現:定義一個數組,用head指向頭,tail指向尾,當查詢與刪除時操作頭,添加操作tail.
class MyQue{
private int maxSize;
private int[] que;
private int head;
private int tail;
private int sum;
public MyQue(int num){
maxSize=num;
que = new int[maxSize];
head=0;
tail=-1;
sum=0;
}
/**
* 增
*/
public void add(int num){
//判斷尾指針是否在底部
if(tail==maxSize-1){
tail=-1;
}
que[++tail]=num;
sum++;//隊列總數量加1
}
/**
* 刪
*/
public void del(){
if(head==maxSize-1){
head=0;
}else{
head++;
}
sum--;
}
/**
* 查
*/
public int sel(){
return que[head];
}
/**
* 判斷是否爲空
*/
public boolean isEmpty(){
return (sum==0);
}
/**
* 判斷數組是否快要溢出
*/
public boolean isFull(){
return (sum==maxSize);
}
}