栈与队列的java实现

1栈与队列

        栈的实现:特色,先进后出,每次只能操做最上面的数据;

1.建立栈类;

package cn.xiaobo.Stack;数组

public class StackApp {
    
    private long maxsize;
    private long[] StackArr;
    private int top;
    
    public StackApp(int size) {
        
        this.maxsize=size;
        StackArr=new long[size];
        top=-1;
    }
    
    public void push(long item) {
        StackArr[++top]=item;
    }
    /**
     * 返回并弹出最上面的那个数据
     * @return
     */
    public long pop(){
        return StackArr[top--];
    }
    /**
     * 只能返回,不会弹出数据
     */
    public long peek() {
        return StackArr[top];
    }
    public Boolean isEmpty() {
        return top==-1;
    }
    public Boolean isFull(){
        return top==maxsize-1;
    }
    
}
函数

2.在main函数实验一下this

package cn.xiaobo.Stacspa

//插入10个数
        stApp.push(23);
        stApp.push(24);
        stApp.push(25);
        stApp.push(26);
        stApp.push(27);
        stApp.push(28);
        stApp.push(29);
        stApp.push(30);
        stApp.push(1);
        stApp.push(13);
        
        
        System.out.println("peek is: "+stApp.peek());
.net

//循环输出
        while(!stApp.isEmpty()){
            System.out.println("pop is: "+stApp.pop());
        
        }
    }
}
队列

3.输出结果:能够看出先插入的后出,后进的先出

peek is: 13
pop is: 13
pop is: 1
pop is: 30
pop is: 29
pop is: 28
pop is: 27
pop is: 26
pop is: 25
pop is: 24
pop is: 23rem

2.队列的实现

    

    //QueueApp

package cn.xiaobo.Queue;get

public class QueueApp {it

    private int tail;
    private int front;
    private int maxsize;
    private int nitems;        //用来检验队列是否满或者空;
    private int[] QueueArr;
    
    public QueueApp(int maxsize) {
        tail=0;
        front=0;
        this.maxsize=maxsize;
        QueueArr=new int[maxsize];
        nitems=0;
    }
    /**
     * 这里用tail就是表示后面插入的数据
     * 下标值越大,放在数组的后边
     * @param item
     */
    public void insert(int item) {
        QueueArr[tail++]=item;
        //当已是数组容量最大值时,从头开始;
        if(tail==maxsize){
            tail=0;
        }
        nitems++;
        
    }
    public int remove() {
        int temp=QueueArr[front++];
        if(front==maxsize){
            front=0;
        }
        nitems--;
        return temp;
    }
    public Boolean isEmpty() {
        return nitems==0;
    }
    public Boolean isFull() {
        return nitems==maxsize;
    }
    public int peekfront() {
        return QueueArr[front];
    }
    //nitem的个数就是队列的个数
    public int size() {
        return nitems;
    }
}
class

    //QueueMain

package cn.xiaobo.Queue;

/**
 * 特色,先进先出FIFO,每次操做最前面的数据
 * @author 晓  *  */ public class QueueMain {         public static void main(String[] args) {             QueueApp queueApp=new QueueApp(10);                          queueApp.insert(20);             queueApp.insert(10);             queueApp.insert(23);             queueApp.insert(22);             queueApp.insert(25);             queueApp.insert(26);             queueApp.insert(28);             queueApp.insert(29);             queueApp.insert(23);             queueApp.insert(42);                          System.out.println(queueApp.isFull());             System.out.println(queueApp.peekfront());             while(!queueApp.isEmpty()){                 System.out.println("the size is : "+queueApp.size());                 System.out.println("remove is : "+queueApp.remove());             }         } }

相关文章
相关标签/搜索