zoukankan      html  css  js  c++  java
  • 数据结构——队列

    队列(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;
        }
    
    }
  • 相关阅读:
    Go 场景
    sourcetree clone 提示url无效
    简单去重比较/复杂数据去重处理
    vue组件之间的通信
    js-执行机制之同步、异步、宏任务、微任务
    react生命周期
    git push被忽略的文件 处理
    请求头的属性
    运算精度问题https://blog.csdn.net/smile_ping/article/details/80284969
    react中状态提升
  • 原文地址:https://www.cnblogs.com/zyxiaohuihui/p/8445411.html
Copyright © 2011-2022 走看看