一. 实现一个数组栈
public class ArrayStack {
//数组
private int[] items;
//栈中的元素个数
private int count;
//栈的大小
private int n;
/**
* 使用构造方法初始化一个栈
*/
public ArrayStack (int n){
this.items = new int[n];
this.n = n;
this.count = 0;
}
/**
* 入栈
*/
public boolean push(int item){
//判断栈是否已满
if(count == n)
return false;
//入栈
items[count++] = item;
return true;
}
/**
* 出栈
*/
public int pop(){
//判断栈是否为空
if(count == 0)
return -1;
int tmp = items[--count];
return tmp;
}
}
二 . 几种常用队列的的实现
2.1 顺序栈的实现
package com.january;
public class ArrayQueue {
private int[] items;
//队列大小
private int n = 0;
private int head = 0;
private int tail = 0;
/**
* 申请一个大小为capacity的数组
*/
public ArrayQueue(int capacity){
this.items = new int[capacity];
this.n = capacity;
}
/**
* 入队
*/
public boolean enqueue(int item){
//判断队列是否已满
if(tail == n)
return false;
items[tail++] = item;
return true;
}
/**
* 出队
*/
public int enqueue(){
//判断队列是否为空
if(head == tail)
return -1;
int tmp = items[head++];
return tmp;
}
}
package com.january;
public class CircleQueue {
private int[] items;
//队列大小
private int n = 0;
private int head = 0;
private int tail = 0;
/**
* 申请一个大小为capacity的数组
*/
public CircleQueue(int capacity){
this.items = new int[capacity];
this.n = capacity;
}
/**
* 入队
*/
public boolean enqueue(int item){
//判断队列是否已满
if((tail+1)%n == head)
return false;
items[tail] = item;
tail = (tail+1)%n;
return true;
}
/**
* 出队
*/
public int enqueue(){
//判断队列是否为空
if(head == tail)
return -1;
int tmp = items[head];
head = (head+1)%n;
return tmp;
}
}
日拱一卒,功不唐捐