您的位置:首页 > 理论基础 > 数据结构算法

java数据结构与算法 第4章 栈和队列

2016-11-13 21:02 501 查看
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;

}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java 数据结构 队列