栈与循环队列
程序员文章站
2022-07-14 13:06:01
...
栈:先进后出,实现:定义一个数组,并定义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);
}
}
上一篇: C# 实现无边框窗体拖动