一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - 基于Java數組實現循環隊列的兩種方法小結

基于Java數組實現循環隊列的兩種方法小結

2021-03-07 12:09yjbjingcha Java教程

下面小編就為大家分享一篇基于Java數組實現循環隊列的兩種方法小結,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧

用java實現循環隊列的方法:

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

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

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

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

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

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

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

隊列的示意圖

基于Java數組實現循環隊列的兩種方法小結

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

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

基于Java數組實現循環隊列的兩種方法小結

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

循環隊列示意圖:

基于Java數組實現循環隊列的兩種方法小結

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

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

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

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

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

例如以下圖:

基于Java數組實現循環隊列的兩種方法小結

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

幾個重點:

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

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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
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數組實現循環隊列的兩種方法小結就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持服務器之家。

原文鏈接:https://www.cnblogs.com/yjbjingcha/p/7239085.html

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 草草在线免费视频 | 成年人在线观看视频 | 和两个男人玩3p好爽视频 | 日韩一级片在线免费观看 | 成 人 亚洲 综合天堂 | 村妇超级乱淫伦小说全集 | 我要看免费毛片 | 奶茶视频官网免费 | 日本videosdesexo乱 | 范冰冰上面好大下面好紧 | 国产一区私人高清影院 | 亚久久伊人精品青青草原2020 | 国产卡一卡二卡四卡无卡 | 扒开放荡老师裙子猛烈的进入 | 白丝爆动漫羞羞动漫网站 | 亚洲精品久久中文字幕 | 色综合天天五月色 | 99草精品视频 | 国产精品久久久久影视不卡 | 草女人逼| 大胸被c出奶水嗷嗷叫 | 福利视频一区青娱 | 国产伦久视频免费观看视频 | 日本免费观看95视频网站 | 欧美人与牲动交xxx 欧美人妖另类性hd 欧美人人干 | 日韩精品视频在线播放 | 国产亚洲一区二区三区 | 国产视频分类 | 国产精品亚洲w码日韩中文 国产精品香蕉在线观看不卡 | 色综合图片 | coolgay男男gayxxx chinese壮直男gay老年人 chinese野外gay军人 | 精品国产91高清在线观看 | 99精品视频在线观看 | 高清色黄毛片一级毛片 | 91久久青青青国产免费 | 精品推荐国产麻豆剧传媒 | 天美传媒tm0065 | 四虎在线永久视频观看 | 欧美一区二区三区gg高清影视 | 爱欲荡漾在线观看 | 欧美一区二区三区gg高清影视 |