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

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

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

服務器之家 - 編程語言 - Java教程 - Java數據結構之隊列(動力節點Java學院整理)

Java數據結構之隊列(動力節點Java學院整理)

2020-09-10 13:48動力節點 Java教程

隊列(Queue)是只允許在一端進行插入,而在另一端進行刪除的運算受限的線性表。 這篇文章詳細給大家介紹了java數據結構之隊列,感興趣的朋友跟隨小編一起學習吧

隊列的定義:

隊列(Queue)是只允許在一端進行插入,而在另一端進行刪除的運算受限的線性表。 

Java數據結構之隊列(動力節點Java學院整理)

(1)允許刪除的一端稱為隊頭(Front)。

(2)允許插入的一端稱為隊尾(Rear)。

(3)當隊列中沒有元素時稱為空隊列。

(4)隊列亦稱作先進先出(First In First Out)的線性表,簡稱為FIFO表。

   隊列的修改是依先進先出的原則進行的。新來的成員總是加入隊尾,每次離開的成員總是隊列頭上的(不允許中途離隊)。

隊列的存儲結構及實現

隊列的順序存儲結構

(1) 順序隊列的定義:

  隊列的順序存儲結構稱為順序隊列,順序隊列實際上是運算受限的順序表。

(2)順序隊列的表示:

和順序表一樣,順序隊列利用內存中一段連續的存儲空間來存放當前隊列中的元素。

由于隊列的隊頭和隊尾的位置是變化的,設置兩個指針front和rear分別指示隊頭元素和隊尾元素,它們的初值在隊列初始化時均應置為0。

Java數據結構之隊列(動力節點Java學院整理)

(3)順序隊列的基本操作

入隊時:將新元素插入rear所指的位置的后一位。

出隊時:刪去front所指的元素,然后將front加1并返回被刪元素。

(4)順序表的溢出現象

 ①“下溢”現象

 當隊列為空時,做出隊運算產生的溢出現象。“下溢”是正常現象,常用作程序控制轉移的條件。

② "真上溢"現象

當隊列滿時,做進棧運算產生空間溢出的現象。“真上溢”是一種出錯狀態,應設法避免。

③ "假上溢"現象

由于入隊和出隊操作中,頭尾指針只增加不減小,致使被刪元素的空間永遠無法重新利用。當隊列中實際的元素個數遠遠小于內存中本分配的空間時,也可能由于尾指針已超越向量空間的上界而不能做入隊操作。該現象稱為"假上溢"現象。如下圖

Java數據結構之隊列(動力節點Java學院整理)

循環隊列:

如上圖所示,這種頭尾相接的順序存儲結構稱為循環隊列(circular queue)。

循環隊列中需要注意的幾個重要問題:

①隊空的判定條件,隊空的條件是front=rear;

②隊滿的判定條件,(rear+1)%QueueSize=front。QueueSize為隊列初始空間大小。

循環隊列的java實現代碼

?
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
50
51
52
53
54
55
56
57
public class Queue {
  private int size;  //當前隊列元素個數
  private int[] Array;//存放隊列元素的數組
  private int MaxSize;//隊列最大尺寸
  //構造函數
  public Queue(int maxsize){
    MaxSize = maxsize;
    Array = new int[MaxSize];
    size = 0;  
  }
  //判斷隊列是否為空
  public int IsEmpty(){
    if(size == 0)
      return 0;
    return -1;
  }
  //判斷隊列是否為滿
  public int IsFull(){
    if(size == MaxSize)
      return 0;
    return -1;
  }
  //返回隊列長度
  public int GetLength(){
    return this.size;
  }
  //隊列插入
  public int EnQueue(int x){
    //若隊列不滿,把x插到隊尾,返回0;否則返回-1;
    if(IsFull() == -1){
      Array[size] = x;
      size++;
      return 0;
    }
    return -1;
  }
  //隊列刪除
  public int DeEmpty(){
    //若隊列不空,則刪除對頭元素,返回該元素的值,否則返回-404;
    if(IsEmpty() == -1){
      int x = Array[0];
      for(int j=0; j<MaxSize-1; j++)
        Array[j] = Array[j+1];//前移
      MaxSize--;
      return x;
    }
    return -404;
  }
  //讀取隊列頭部元素
  public int GetFront(){
    //讀隊頭,若隊列非空,則返回隊列頭元素的值,否則返回-404;
    if(IsEmpty() == -1){
      return Array[0];
    }
    return -404;
  }
}

以上所述是小編給大家介紹的Java數據結構之隊列(動力節點Java學院整理),希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對服務器之家網站的支持!

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 99久久精品免费看国产高清 | 911香蕉视频 | 亚洲国产精品成人午夜在线观看 | 爆操美女| 亚洲国产精品自产在线播放 | 男人女人日皮 | 亚洲电影成人 成人影院 | 双性总裁被调教1v1 双性双根 | 先锋资源久久 | 亚1洲二区三区四区免费 | 私人影院在线播放 | 亚洲精品国产精品精 | 无套啪啪 | bedfriend泰剧全集免费观看 | 亚洲国产欧美在线人网站 | 久久精品动漫网一区二区 | 国产一区精品 | 四虎影音先锋 | 亚洲欧美日韩在线观看看另类 | 日韩欧美亚洲一区精选 | 护士柔佳 | jm漫天堂破解版 | 五月婷婷俺也去开心 | 三级午夜宅宅伦不卡在线 | 欧美成人福利 | 美女被草出水 | 91免费精品国自产拍在线可以看 | 岛国免费大片 | 国产成人8x视频一区二区 | 成人观看免费观看视频 | 免费精品视频在线 | 丝瓜视频黄色在线观看 | 日本色资源 | 亚洲mv国产精品mv日本mv | 丝袜足控免费网站xx动漫漫画 | 亚洲色图首页 | 极品丝袜乱系列在线阅读 | 精品亚洲视频在线 | 欧美美女被艹 | 91动漫在线观看 | 亚洲免费在线观看视频 |