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

来源:互联网 发布:淘宝男模特赚钱吗 编辑:程序博客网 时间:2024/05/29 07:55

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;    }}
0 0
原创粉丝点击