棧與隊列的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());             }         } }

相關文章
相關標籤/搜索