1.栈
栈只允许访问一个数据项, 即最后插入的数据项,移除这个数据项才能访问倒数第二个插入的数据项,依此类推。以下是java实现的栈:
package exam;
public class StackTest {
public static void main(String[] args) {
// TODO Auto-generated method stub
StackX stackArray =new StackX(10);
stackArray.push(10);
stackArray.push(20);
stackArray.push(30);
stackArray.push(40);
stackArray.push(50);
while (!stackArray.isEmpty()) {
long value=stackArray.pop();
System.out.println(value);
//结果
// 50
// 40
// 30
// 20
// 10
}
}
}
class StackX{
private int maxSize; //栈数组大小;
private long[] stackArray;
private int top;
public StackX(int s){
maxSize=s; //数组大小
stackArray=new long[maxSize]; //创建数组
top=-1;
}
//插入元素
public void push(long i){
stackArray[++top]=i;
}
public long pop(){
return stackArray[top--];
}
public long peek(){
return stackArray[top];
}
public boolean isEmpty(){
return (top==-1);
}
public boolean isFull(){
return (top==maxSize-1);
}
}
2.队列
和栈类似,但是先插进入的先出。
package exam;
public class QueueTest {
public static void main(String[] args) {
Queue testQueue= new Queue(5);
testQueue.insert(10);
testQueue.insert(30);
testQueue.insert(40);
testQueue.insert(20);
testQueue.remove();
testQueue.remove();
testQueue.remove();
testQueue.insert(60);
testQueue.insert(70);
testQueue.insert(80);
testQueue.insert(90);
while (!testQueue.isEmpty()) {
long n=testQueue.remove();
System.out.println(n);
}
}
}
class Queue{
private int maxsiza;
private long[] queArray;
private int front; //对头
private int rear; //队尾
private int nItems; //当前数据项的个数
public Queue(int s){
maxsiza=s;
queArray=new long[maxsiza];
front = 0;
rear =-1;
nItems = 0;
}
//插入的前提应该是队列不满 ISFull()为true
public void insert(long j){
if(rear==maxsiza-1)
rear =-1;
queArray[++rear] = j;
nItems++;
}
//remove方法的前提是队列不为空
public long remove(){
long temp =queArray[front++];
if(front == maxsiza)
front = 0;
nItems--;
return temp;
}
public long peekFront(){
return queArray[front];
}
public boolean isEmpty(){
return (nItems==0);
}
public boolean isFull(){
return (nItems==maxsiza);
}
public int size() {
return nItems;
}
}