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;
        }
    
    }
  • 相关阅读:
    继承与多态
    String作业
    课后作业及动手动脑
    作业3
    动手动脑
    实验任务四
    动手动脑
    课堂练习01
    《大道至简》第一章读后感伪代码
    C++常用编程关键字
  • 原文地址:https://www.cnblogs.com/zyxiaohuihui/p/8445411.html
Copyright © 2011-2022 走看看