• 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
  • 相关阅读:
    C语言实现数据结构中的顺序栈
    什么是A股什么是B股,为什么有AB股之分?
    C语言实现数据结构中的链队列
    C语言实现数据结构中的循环链表
    C语言实现数据结构的链表
    C语言中指针变量作为函数参数和一般变量作为函数参数的区别
    javascrip实现下拉框联动
    C语言实现数据结构中的顺序表
    C语言实现数据结构中的链栈
    SQL语句之基础增删改查 time
  • 原文地址:https://www.cnblogs.com/jalja/p/5137979.html
Copyright © 2020-2023  润新知