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

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

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

服務器之家 - 編程語言 - Java教程 - Java實現隊列的三種方法集合

Java實現隊列的三種方法集合

2020-09-17 00:22顏顏顏顏顏越 Java教程

這篇文章主要介紹了Java實現隊列的三種方法集合,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧

數組實現隊列

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
//數組實現隊列
class queue{
 int[] a = new int[5];
 int i = 0;
 //入隊操作
 public void in(int m) {
 a[i++] = m;
 }
// 出隊列操作  取出最前面的值 通過循環遍歷把所有的數據向前一位
 public int out() {
 int index = 0;
 int temp = a[0];
 for(int j = 0;j < i;j++) {
  a[j] = a[j + 1];
 }
 return temp;
 }
}

ArrayList實現隊列

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
//集合實現隊列
class queue{
 List<Integer> list = new ArrayList<Integer>();
 int index = 0;
 
 public void in(int n) {
 list.add(n);
 index++;
 }
 //出隊列操作
 //出隊
  public int out(){
    if(!list.isEmpty()){
      index--;
      return list.remove(0);
    }
    return -1;
  }
}

兩個堆棧實現隊列

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
//兩個堆棧實現一個隊列
class queue3 {
 
 Stack<Integer> stackA = new Stack<Integer>();
 Stack<Integer> stackB = new Stack<Integer>();
 
 //入隊
 public void in(int n) {
   stackA.push(n);
 }
 
 //出隊 我們把A里面的元素遍歷拿出放入B中 再拿出B中的第一個元素
 public int out() {
  //判斷b棧有沒有元素 有返回false 無返回真
   if(stackB.isEmpty()) {
    while(!stackA.isEmpty()) {
    stackB.push(stackA.pop());
    }
   }
   return stackB.pop();
 }
}

補充知識:java使用鏈表實現隊列

隊列使用Java進行鏈表實現,在網上找到了一張圖,很好,借鑒一下

Java實現隊列的三種方法集合

設置兩個結點node,front指向隊首元素,rear指向隊尾;

上代碼:

?
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
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
public class LinkedQueue {
 
  Node front;//隊頭指針,指向隊頭節點
  Node rail;//隊尾指針,指向隊尾節點
  int size = 0;//記錄隊列長度
 
  //構造函數
  public LinkedQueue() {
    front = rail = null;
  }
 
  public boolean isEmpty() {
    return size == 0 ? true : false;
  }
 
  //添加元素
  public boolean addQueue(Object ele) {
    if (size == 0) {
      front = new Node(null, ele);
      rail = front;
      size++;
      return true;
    }
    Node s = new Node(null, ele);
    //這塊有個主意的地方,一旦rail設置了next屬性,因為front節點與rail節點指向了同一個node節點,持有同一個結點的一個引用,因此front節點next屬性也被填充
    rail.setNext(s);
    rail = s;
    size++;
    return true;
  }
 
  /**
   * 刪除元素,出隊列
   * @return
   */
  public boolean deleteQueue() {
    if (isEmpty()) {
      System.out.println("當前隊列為空");
      return false;
    }
    front = front.next;
    size--;
    return true;
  }
 
  public static void main(String[] args) {
    LinkedQueue queue = new LinkedQueue();
 
    queue.addQueue(1);
    queue.addQueue(2);
    queue.addQueue(3);
    queue.deleteQueue();
 
  }
}
 
/**
 * 首先鏈表底層是一個個結點
 */
class Node {
 
  Node next;
  Object element;
 
  public Node(Node next, Object element) {
    this.next = next;
    this.element = element;
  }
 
  public Node getNext() {
    return next;
  }
 
  public void setNext(Node next) {
    this.next = next;
  }
 
  public Object getElement() {
    return element;
  }
 
  public void setElement(Object element) {
    this.element = element;
  }
 
}

以上這篇Java實現隊列的三種方法集合就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持服務器之家。

原文鏈接:https://blog.csdn.net/NuanShuTT/article/details/108573687

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 精品无码国产AV一区二区三区 | 91视频完整版 | 国产a不卡片精品免费观看 国产aaa伦理片 | 午夜亚洲国产 | 4虎影视国产在线观看精品 4s4s4s4s色大众影视 | 午夜精品久久久久久久99蜜桃i | 爸爸的宝贝小说全文在线阅读 | 亚洲国产综合精品 | 国产亚洲自愉自愉 | 国产私拍精品88福利视频 | 四虎影视色费永久在线观看 | 波多野结衣在线中文字幕 | 99热这里只有精品在线观看 | 欧美va在线 | 十大网站免费货源 | 国产视频久久久 | 天天操天天干天天 | 香蕉视频在线观看网站 | 欧美日韩成人在线视频 | 日韩视频在线精品视频免费观看 | 亚洲天堂网2018 | 猫咪maomiav永久网址 | 国产小视频在线播放 | 国内自拍第1页 | 四虎精品永久在线网址 | 国产成人亚洲精品91专区手机 | 1024国产精品视频观看 | 日本一区二区三区精品 | 亚州精品永久观看视频 | 亚洲va久久久久 | 乳 好大h | 麻豆网站视频国产在线观看 | coolgay男男gayxxx| chinesemature丰满成熟 | 国产精品第3页 | 国产高清好大好夹受不了了 | 波多野结衣 在线播放 | caoporm国产精品视频免费 | 污到湿的爽文免费阅读 | 无人区免费一二三四乱码 | 日本视频在线免费看 |