• 数据结构——队列


    队列(Queue)是只允许在一端进行插入,而在另一端进行删除的运算受限的线性表。 
    (1)允许删除的一端称为队头(Front)。 
    (2)允许插入的一端称为队尾(Rear)。 
    (3)当队列中没有元素时称为空队列。 
    (4)队列亦称作先进先出(First In First Out)的线性表,简称为FIFO表。 
       在Java编程中,Queue的实现都是用LinkedList

    顺序队列

    package com.demo.quee;
    
    public class SeqQuee {
    
    
        private int top;
        private int rear;
        private int capacity = 10;
        private int[] array;
        private int size;
        
        public SeqQuee(int capacity){
            top = rear = 0;
            array = new int[capacity];
        }
        
        public SeqQuee(){
            array = new int[this.capacity];
        }
        
        public int size(){
            return size;
        }
        
        public boolean isEmpty(){
            return this.top == -1;
        }
        
        public void push(int data){
            if(array.length == size){
                addCapacity(size*2);
            }
            array[++rear] = data;
            size++;
        }
        
        public int pop(){
            if(isEmpty()){
                return -1;
            }
            size--;
            array[top] = (Integer) null;
            return array[top--];
        }
        
        public void addCapacity(int capacity){
            if(capacity < size){
                return;
            }
            int[] old = array;
            array = new int[capacity];
            for(int i=0; i<size; i++){
                array[i] = old[i];
            }
        }
    
    }

    链式队列

    package com.demo.quee;
    
    import com.demo.node.Node;
    
    public class LinkedQuee {
    
    
        private Node top;
        private Node rear;
        private int size;
        
        public LinkedQuee(){
            this.top = null;
        }
        
        public int size(){
            return this.size;
        }
        
        public void push(int data) throws Exception{
            if(this.top == null){
                this.top = new Node(data);
            }else{
                Node p = new Node(data,this.top);
                rear.next = p;
                rear = p;
            }
            size++;
        }
        
        public int pop(){
            Node p = top.next;
            int data = p.data;
            top.next = p.next;
            p = null;
            size--;
            return data;
        }
    
    }
  • 相关阅读:
    Python环境搭建详解(Window平台)
    扎心了Python
    解决Git
    Android入门教程(四)
    HEXO快速搭建自己的博客
    每日Android一问等你来解答-什么是Activity的生命周期?
    如何才能够系统地学习Java并发技术?
    LeetCode刷题指南(字符串)
    学生时代的最后一个新年,请一定要做这五件事
    20位程序员关于求职的疑问,以及我给出的参考答案
  • 原文地址:https://www.cnblogs.com/zyxiaohuihui/p/8445411.html
Copyright © 2020-2023  润新知