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;
        }
    
    }
  • 相关阅读:
    Python自学之乐-python中break continue exit() pass浅析
    Python自学之乐-Python字典实现简单的三级菜单
    Python自学之乐-浅析Python的深浅拷贝
    百度云服务器允许外网访问
    svg究竟是什么?
    基础知识之SQL
    基础知识之html/css/js
    vue基础知识
    数据库基础知识
    Windows 知识基础
  • 原文地址:https://www.cnblogs.com/zyxiaohuihui/p/8445411.html
Copyright © 2011-2022 走看看