亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

基于Java數組實現循環(huán)隊列的兩種方法小結

 更新時間:2017年12月18日 14:46:15   作者:yjbjingcha  
下面小編就為大家分享一篇基于Java數組實現循環(huán)隊列的兩種方法小結,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧

用java實現循環(huán)隊列的方法:

1、添加一個屬性size用來記錄眼下的元素個數。

目的是當head=rear的時候。通過size=0還是size=數組長度。來區(qū)分隊列為空,或者隊列已滿。

2、數組中僅僅存儲數組大小-1個元素,保證rear轉一圈之后不會和head相等。也就是隊列滿的時候。rear+1=head,中間剛好空一個元素。

當rear=head的時候。一定是隊列空了。

隊列(Queue)兩端同意操作的類型不一樣:

能夠進行刪除的一端稱為隊頭,這樣的操作也叫出隊dequeue;

能夠進行插入的一端稱為隊尾,這樣的操作也叫入隊enqueue。

隊列的示意圖

實現隊列時,要注意的是假溢出現象。如上圖的最后一幅圖。

如圖所看到的的假溢出現象

解決的方法:使用鏈式存儲,這顯然能夠。在順序存儲時。我們常見的解決的方法是把它首尾相接,構成循環(huán)隊列。這能夠充分利用隊列的存儲空間。

循環(huán)隊列示意圖:

在上圖中。front指向隊列中第一個元素。rear指向隊列隊尾的下一個位置。

但依舊存在一個問題:當front和rear指向同一個位置時,這代表的是隊空還是隊滿呢?大家能夠想象下這樣的情景。

解決這種問題的常見做法是這種:

使用一標記,用以區(qū)分這樣的易混淆的情形。

犧牲一個元素空間。當front和rear相等時,為空。當rear的下一個位置是front時。為滿。

例如以下圖:

以下我們給出循環(huán)隊列,并採用另外一種方式,即犧牲一個元素空間來區(qū)分隊空和隊滿的代碼.

幾個重點:

1、front指向隊頭。rear指向隊尾的下一個位置。

2、隊為空的推斷:front==rear;隊為滿的推斷:(rear+1)%MAXSIZE==front。

import java.io.*;
  public class QueueArray {  
  Object[] a; //對象數組,隊列最多存儲a.length-1個對象  
  int front; //隊首下標  
  int rear;  //隊尾下標  
  public QueueArray(){  
    this(10); //調用其他構造方法  
  }  
  public QueueArray(int size){  
    a = new Object[size];  
    front = 0;  
    rear =0;  
  }  
  /** 
   * 將一個對象追加到隊列尾部 
   * @param obj 對象 
   * @return 隊列滿時返回false,否則返回true 
   */ 
  public boolean enqueue(Object obj){  
    if((rear+1)%a.length==front){  
      return false;  
    }  
    a[rear]=obj;  
    rear = (rear+1)%a.length;  
    return true;  
  }  
  /** 
   * 隊列頭部的第一個對象出隊 
   * @return 出隊的對象,隊列空時返回null 
   */ 
  public Object dequeue(){  
    if(rear==front){  
      return null;  
    }  
    Object obj = a[front];  
    front = (front+1)%a.length;  
    return obj;  
  }  
  public static void main(String[] args) {  
    QueueArray q = new QueueArray(4);  
    System.out.println(q.enqueue("張三"));  
    System.out.println(q.enqueue("李斯"));  
    System.out.println(q.enqueue("趙五"));  
    System.out.println(q.enqueue("王一"));//無法入隊列,隊列滿  
    for(int i=0;i<4;i++){  
      System.out.println(q.dequeue());  
    }  
  }  
} 

以上這篇基于Java數組實現循環(huán)隊列的兩種方法小結就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • Java反射使用的詳細介紹(最新推薦)

    Java反射使用的詳細介紹(最新推薦)

    這篇文章主要介紹了Java反射使用的詳細介紹,反射的第一步都是先得到編譯后的Class類對象,然后就可以得到Class的全部成分,本文結合實例代碼詳細講解,需要的朋友可以參考下
    2023-02-02
  • java中使用數組進行模擬加密的方法

    java中使用數組進行模擬加密的方法

    這篇文章主要介紹了java中使用數組進行模擬加密的方法,需要的朋友可以參考下
    2014-08-08
  • 全網最全最細的jmeter接口測試教程以及接口測試流程(入門教程)

    全網最全最細的jmeter接口測試教程以及接口測試流程(入門教程)

    本文主要介紹了全網最全最細的jmeter接口測試教程以及接口測試流程,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-11-11
  • SpringBoot解決Required?String?parameter?xxx?is?not?present問題

    SpringBoot解決Required?String?parameter?xxx?is?not?prese

    這篇文章主要介紹了SpringBoot解決Required?String?parameter?xxx?is?not?present問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-01-01
  • Springboot+netty實現Web聊天室

    Springboot+netty實現Web聊天室

    這篇文章主要介紹了利用springboot+netty實現一個簡單Web聊天室,文中有非常詳細的代碼示例,對正在學習Java的小伙伴們有非常好的幫助,需要的朋友可以參考下
    2021-12-12
  • 利用Spring JPA中的@Version注解實現樂觀鎖

    利用Spring JPA中的@Version注解實現樂觀鎖

    樂觀鎖是數據庫和應用程序中使用的一種并發(fā)控制策略,用于在多個事務嘗試更新單個記錄時確保數據完整性,Java Persistence API (JPA) 提供了一種借助@Version注解在 Java 應用程序中實現樂觀鎖的機制,文中有詳細的代碼示例供大家參考,需要的朋友可以參考下
    2023-11-11
  • vue3實現一個todo-list

    vue3實現一個todo-list

    這篇文章主要為大家詳細介紹了基于vuejs實現一個todolist項目,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能給你帶來幫助
    2021-08-08
  • java向下轉型基礎知識點及實例

    java向下轉型基礎知識點及實例

    在本篇文章里小編給大家整理的是一篇關于java向下轉型基礎知識點及實例內容,有興趣的朋友們可以學習下。
    2021-05-05
  • Java設計模式之策略模式詳解

    Java設計模式之策略模式詳解

    這篇文章主要為大家詳細介紹了Java設計模式之策略模式,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-10-10
  • 高并發(fā)環(huán)境下安全修改同一行數據庫數據的策略分享

    高并發(fā)環(huán)境下安全修改同一行數據庫數據的策略分享

    隨著互聯網技術的發(fā)展,越來越多的應用需要在高并發(fā)環(huán)境中運行,數據庫的并發(fā)控制成為了業(yè)務的關鍵,本文將介紹如何在高并發(fā)情況下,安全地修改數據庫中的同一行數據,需要的可以參考一下
    2023-06-06

最新評論