zoukankan      html  css  js  c++  java
  • java实现栈与队列

    一、栈

       栈是一种特殊的线性表。其特殊性在于限定插入和删除数据元素的操作只能在线性表的一端进行。(先进后出)

      访问权限:栈限制了访问权限,只可以访问尾节点,也就是最后添加的元素 即栈顶的元素

     1 /**
     2  * 栈 先进后出
     3  * @author Administrator
     4  *
     5  */
     6 public class MyStack {
     7     private long [] arr;
     8     private int top;
     9     public MyStack(){
    10         arr=new long[10];
    11         top=-1;//初始化的时候栈为空
    12     }
    13     public MyStack(int maxSize){
    14         arr=new long [maxSize];
    15         top=-1;
    16     }
    17     /**
    18      * 入栈
    19      */
    20     public void push(long value){
    21         arr[++top]=value;
    22     }
    23     /**
    24      * 移出栈
    25      */
    26     public long pop(){
    27         return arr[top--];
    28     }
    29     /**
    30      * 查看 栈顶的数据
    31      */
    32     public long peek(){
    33         return arr[top];
    34     }
    35     /**
    36      * 查看是否为空
    37      */
    38     public boolean isEmpty(){
    39         return top==-1;
    40     }
    41     /**
    42      * 查看是否满了
    43      */
    44     public boolean isFull(){
    45         return top==arr.length-1;
    46     }
    47     //测试
    48     public static void main(String[] args) {
    49         MyStack myStack=new MyStack();
    50         myStack.push(12);
    51         myStack.push(10);
    52         myStack.push(34);
    53         myStack.push(40);
    54         System.out.println(myStack.peek());
    55         while(!myStack.isEmpty()){
    56             System.out.print(myStack.pop() +", ");
    57         }
    58         System.out.println(myStack.isEmpty());
    59         System.out.println(myStack.isFull());
    60     }
    61 }
    View Code

    二、队列
      队列(Queue)也是一种运算受限的线性表,它的运算限制与栈不同,是两头都有限制,插入只能在表的一端进行(只进不出),
    而删除只能在表的另一端进行(只出不进),允许删除的一端称为队尾(rear),允许插入的一端称为队头 (Front);

     访问权限:队列限制了访问权限,只可以访问队头的数据,也就是最先添加的元素。

    /**
     * 队列 先进 先出
     * @author Administrator
     *
     */
    public class MyQueue {
        private long [] arr;
        private int elements;//元素个数
        private int front;//队列 头
        private int end;//队列尾部
        public MyQueue(){
            arr=new long[10];
            elements=0;
            front=0;
            end=-1;
        }  
        public MyQueue(int size){
            arr=new long[size];
            elements=0;
            front=0;
            end=-1;
        }  
        /**
         * 添加数据  队列 从尾部添加
         */
        public void insert(long value){
            if(end==arr.length-1){
                end=-1;
            }
            arr[++end]=value;
            elements++;
        }
        /**
         * 移除数据  队列从头部移出
         */
        public long remove(){
            long value=arr[front++];
            if(front==arr.length){
                front=0;
            }
            elements--;
            return value;
        }
        /**
         * 查看 队列头部的数据
         */
        public long peek(){
            return arr[front];
        }
        /**
         * 查看 队列是否为空
         * @return
         */
        public boolean isEmpty(){
            return elements==0;
        }
        /**
         * 判断队列 是否满了
         */
        public boolean isFull(){
            return elements==arr.length;
        }
        public static void main(String[] args) {
            MyQueue myQueue=new MyQueue();
            myQueue.insert(1001);
            myQueue.insert(1000);
            myQueue.insert(1003);
            myQueue.insert(1005);
            System.out.println(myQueue.peek());
            while(!myQueue.isEmpty()){
                System.out.print(myQueue.remove()+", ");
            }
            System.out.println();
            System.out.println(myQueue.isEmpty());
            System.out.println(myQueue.isFull());
            
            myQueue.insert(1007);
            myQueue.insert(1002);
            myQueue.insert(1008);
            myQueue.insert(1009);
            while(!myQueue.isEmpty()){
                System.out.print(myQueue.remove()+", ");
            }
            System.out.println();
            System.out.println(myQueue.isEmpty());
            System.out.println(myQueue.isFull());
            
            myQueue.insert(1010);
            myQueue.insert(1012);
            myQueue.insert(1018);
            myQueue.insert(1019);
            while(!myQueue.isEmpty()){
                System.out.print(myQueue.remove()+", ");
            }
            System.out.println();
            System.out.println(myQueue.isEmpty());
            System.out.println(myQueue.isFull());
            
            myQueue.insert(1021);
            myQueue.insert(1022);
            myQueue.insert(1023);
            myQueue.insert(1024);
            while(!myQueue.isEmpty()){
                System.out.print(myQueue.remove()+", ");
            }
            System.out.println();
            System.out.println(myQueue.isEmpty());
            System.out.println(myQueue.isFull());
        }
    }
    View Code
  • 相关阅读:
    第15周作业
    迟到的第14周作业
    第13周作业集
    第11次作业--字符串处理
    找回感觉的练习
    第9次作业--接口及接口回调
    20194684 + 自动生成四则运算题第一版报告
    css的calc在less文件中计算有误问题
    react 细节整理
    js async属性
  • 原文地址:https://www.cnblogs.com/jalja/p/5137979.html
Copyright © 2011-2022 走看看