使用数组模拟队列
- 案例1
public class Queue {
private int[] num= new int[5];
private int len=0;
public int size(){
return this.len;
}
//添加
public int add(int n){
if (len<num.length){
num[len]=n;
len++;
return len;
}else {
return -1; // 满了
}
}
//获取
public int get(){
if (len>0){
int n=num[0];
// 取出第一个后,往前移动
for (int i = 0; i < len-1; i++) {
num[i]=num[i+1];
}
len--;
return n;
}else {
return -1; // 取完了
}
}
}
- 测试
public class test {
public static void main(String[] args) {
Queue q=new Queue();
// 添加
q.add(10);
q.add(20);
q.add(30);
q.add(40);
q.add(50);
// 输出长度
System.out.println(q.size());
// 遍历
while (q.size()>0){
System.out.println(q.get());
}
// 超出长度
q.add(10);
q.add(20);
q.add(30);
q.add(40);
int a = q.add(50);
int a1 = q.add(60);
System.out.println(q.size() + "," + a + "," + a1);
// 取完后
while (q.size()>0){
System.out.println(q.get());
}
System.out.println(q.get()); // 取完
}
}
- 案例2
public class Que {
private int[] num= new int[3];
// 头指针
private int head=-1;
// 尾指针
private int end=-1;
// 已加入后的个数
private int len=0;
public int size(){
return this.len;
}
// 添加
public int add(int n){
if (len==num.length){
System.out.println("队列已加满");
return -1;
}else{
end++;
if(end>=num.length-1){ // [][][3],尾指针指向下标2时
end=0;
}
num[end]=n; // 尾指针先++,再添加
len++;
return len;
}
}
//获取
public int get(){
if (len==0){
System.out.println("队列已取完");
return -1;
}else{
head++;
if(head>=num.length-1){ // [1][2][],头指针指向下标2时
head=0;
}
int n = num[head]; // 头指针先++,再取值
len--;
return n;
}
}
}
- 测试
public class test {
public static void main(String[] args) {
//[][][]
Que que=new Que();
que.add(10);
que.add(20);
que.add(30);
int q = que.add(40); // 满了
System.out.println(q);
que.get();
que.get();
int q1 = que.add(40); // 取2个后再加
System.out.println(q1);
que.get();
que.get(); // 取完了
int q2 = que.get();
System.out.println(q2);
}
}
使用数组模拟栈
- 案例1
public class Zan {
int i=5; // 数组长度为5
private int[] num= new int[i];
private int len=0;
public int size(){
return this.len;
}
//添加
public void add(int n){
if(len<num.length){ //[1][2][3][4][]
for(int i=len; i>0; i--){
num[i]=num[i-1];
}
num[0]=n;
len++;
}else if(len==num.length){
System.out.println("已经满了");
}
}
// 获取
public int get(){
if(len==0){
System.out.println("取完了");
return -1;
}else{
int n=num[0];
for(int i=0; i<len-1; i++){ //[1][2][3][4][]
num[i]=num[i+1];
}
len--;
return n;
}
}
}
- 测试
public class test3 {
public static void main(String[] args) {
Zan zan=new Zan();
zan.add(10);
zan.add(20);
zan.add(30);
zan.add(40);
zan.add(50);
System.out.println(zan.size());
zan.add(60); // 满了
int len = zan.size();
for (int i = 0; i < len; i++) {
System.out.print(zan.get() + ",");
}
System.out.println();
System.out.println(zan.size());
zan.get(); //取完了
}
}
标签:队列,System,len,int,add,数组,public,模拟,out
From: https://www.cnblogs.com/dogleftover/p/17737074.html