大战熟女丰满人妻av-荡女精品导航-岛国aaaa级午夜福利片-岛国av动作片在线观看-岛国av无码免费无禁网站-岛国大片激情做爰视频

專注Java教育14年 全國(guó)咨詢/投訴熱線:400-8080-105
動(dòng)力節(jié)點(diǎn)LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁(yè) 學(xué)習(xí)攻略 Java學(xué)習(xí) 關(guān)于Java隊(duì)列實(shí)現(xiàn)的介紹

關(guān)于Java隊(duì)列實(shí)現(xiàn)的介紹

更新時(shí)間:2022-12-28 13:04:23 來(lái)源:動(dòng)力節(jié)點(diǎn) 瀏覽1548次

隊(duì)列在Java中的實(shí)現(xiàn)

Queue 是一種線性數(shù)據(jù)結(jié)構(gòu),其中元素從稱為Rear的一端插入,并從稱為Front的另一端移除。

Rear 和 Front的值最初設(shè)置為-1,然后這些值隨著元素的插入和刪除而遞增或遞減。

隊(duì)列的基本功能

enqueue:用于在隊(duì)列尾部添加一個(gè)元素。

dequeue:它用于從隊(duì)列的前面刪除一個(gè)元素。

IsEmpty:用于檢查隊(duì)列是否為空。

IsFull:用于檢查隊(duì)列是否已滿。

peek: 用于返回前面的值而不刪除它。

使用數(shù)組的隊(duì)列中的enqueue和操作的復(fù)雜度為。dequeueO(1)

盡管在 Java 中提供了各種抽象數(shù)據(jù)類型(如 Stack、Queue 和 LinkedList)的使用,但始終需要了解數(shù)據(jù)結(jié)構(gòu)的基礎(chǔ)知識(shí)并相應(yīng)地實(shí)現(xiàn)它。

1. Java中使用數(shù)組實(shí)現(xiàn)隊(duì)列

所以這里我們將在Java中使用數(shù)組來(lái)實(shí)現(xiàn)一個(gè)隊(duì)列數(shù)據(jù)結(jié)構(gòu)。

import java.util.*;
// define queue class
class Queue 
{
    int arr[], front, rear, cap, n1;  			
    // Queue constructor
	Queue(int n)
	{
		arr = new int[n];
		cap = n;
		front = 0;
		rear = -1;
		n = 0;
	}
	// dequeue function for removing the front element
	public void dequeue()
	{
		// check for queue underflow
		if (isEmpty())
		{
			System.out.println("No items in the queue,cannot delete");
			System.exit(1);
		}
		System.out.println("Deleting " + arr[front]);
		front = (front + 1) % cap;
		n1--;
	}
	// enqueue function for adding an item to the rear
    public void enqueue(int val)
	{
		// check for queue overflow
		if (isFull())
		{
			System.out.println("OverFlow!!Cannot add more values");
			System.exit(1);
		}
		System.out.println("Adding " + val);
		rear = (rear + 1) % cap;
		arr[rear] = val;
		n1++;
	}
	// peek function to return front element of the queue
	public int peek()
	{
		if (isEmpty()) 
		{
			System.out.println("Queue empty!!Cannot delete");
			System.exit(1);
		}
		return arr[front];
	}
	// returns the size of the queue
	public int size()
	{
		return n1;
	}
	// to check if the queue is empty or not
	public Boolean isEmpty()
	{
		return (size() == 0);
	}
	// to check if the queue is full or not
	public Boolean isFull()
	{
		return (size() == cap);
	}	
	// Queue implementation in java
	public static void main (String[] args)
	{
		// create a queue of capacity 5
		Queue q = new Queue(5);
		q.enqueue(10);
		q.enqueue(20);
		q.enqueue(30);		
		System.out.println("Front element is: " + q.peek());
		q.dequeue();
		System.out.println("Front element is: " + q.peek());
		System.out.println("Queue size is " + q.size());
		q.dequeue();
		q.dequeue();		
		if (q.isEmpty())
			System.out.println("Queue Is Empty");
		else
			System.out.println("Queue Is Not Empty");
	}
}

輸出

添加 10
添加 20
添加 30
前端元素為:10
刪除 10
前端元素為:20
隊(duì)列大小為 2
刪除 20
刪除 30
隊(duì)列為空

2. 使用隊(duì)列接口在 Java 中實(shí)現(xiàn)隊(duì)列

Queue 接口是Java Collections的一部分,由兩個(gè)實(shí)現(xiàn)組成:

LinkedList并且PriorityQueue是實(shí)現(xiàn)Queue接口的兩個(gè)類。

由于Queue 是一個(gè)接口,我們不能創(chuàng)建它的實(shí)例。因此我們創(chuàng)建了該類的實(shí)例LinkedList并將其PriorityQueue分配給隊(duì)列接口。

Queue q1 = new LinkedList();
Queue q2 = new PriorityQueue();

Queue接口主要有五個(gè)操作。他們是:

boolean add(E e):此方法用于在隊(duì)列末尾添加特定元素。由于它的返回類型是布爾值,如果元素添加成功則返回 true,否則返回 false。

E element():此方法返回隊(duì)列的第一個(gè)元素。

E remove():此方法刪除隊(duì)列的第一個(gè)元素。

E poll(): 這個(gè)方法和a類似,remove()唯一的區(qū)別是隊(duì)列為空時(shí)poll返回null。

E peek():該方法與 an 的方法類似,element()唯一的區(qū)別是如果隊(duì)列為空,則 element 返回 null。

讓我們通過(guò)示例學(xué)習(xí)這些操作:

1)使用LinkedList類

import java.util.*;
public class QueueExample1 
{	 
   public static void main(String[] args) 
   {
	  Queue<String> q = new LinkedList<String>();	    
      //Adding elements to the Queue
      q.add("Mohit");
      q.add("Priyanka"); 
      q.add("Prabhat");
      q.add("Pranjal");
      q.add("Anilanshu");       
      System.out.println("Elements in Queue:"+q);
      System.out.println("Removed element: "+q.remove());
      System.out.println("Head: "+q.element());
      System.out.println("poll(): "+q.poll());
      System.out.println("peek(): "+q.peek());
      System.out.println("Elements in Queue:"+q);
   }
}

輸出

隊(duì)列中的元素:[Mohit、Priyanka、Prabhat、Pranjal、Anilanshu]
刪除的元素:Mohit 
Head:Priyanka 
poll():Priyanka 
peek():Prabhat
隊(duì)列中的元素:[Prabhat、Pranjal、Anilanshu]

2)使用 PriorityQueue類

import java.util.*;
public class QueueExample2 
{ 
   public static void main(String[] args) 
   {
	  Queue<Integer> q2 = new PriorityQueue<Integer>();	    
      //Adding elements to the Queue
      q2.add(10);
      q2.add(20); 
      q2.add(30);
      q2.add(40);
      q2.add(50);  
      System.out.println("Elements in Queue:"+q2);
      System.out.println("Removed element: "+q2.remove());
      System.out.println("Head: "+q2.element());	    
      System.out.println("poll(): "+q2.poll());
      System.out.println("peek(): "+q2.peek());
      System.out.println("Elements in Queue:"+q2);
   }
}

輸出

隊(duì)列中的元素:[10,20,30,40,50]
刪除的元素:10 
Head:20 
poll():20 
peek():30
隊(duì)列中的元素:[30,40,50]

以上就是關(guān)于“關(guān)于Java隊(duì)列實(shí)現(xiàn)的介紹”,大家如果對(duì)此比較感興趣,想了解更多相關(guān)知識(shí),不妨來(lái)關(guān)注一下本站的Java隊(duì)列技術(shù)文檔,里面還有更豐富的知識(shí)等著大家去學(xué)習(xí),希望對(duì)大家能夠有所幫助。

提交申請(qǐng)后,顧問(wèn)老師會(huì)電話與您溝通安排學(xué)習(xí)

  • 全國(guó)校區(qū) 2025-10-10 搶座中
免費(fèi)課程推薦 >>
技術(shù)文檔推薦 >>
主站蜘蛛池模板: 四虎ww| 亚洲视频在线精品 | 免费h片在线观看网址最新 免费v片在线观看无遮挡 | 国产午夜爽爽窝窝在线观看 | 国产深夜福利视频在线观看 | 嫩草嫩草55av| 国产在线精彩视频 | 在线不卡日韩 | 在线播放国产视频 | 日本一级毛片2021免费 | 国产在线公开视频 | 日本不卡高清视频 | 99在线视频免费观看 | 精品日产| 99热热久久 | 久久黄视频 | 久久精品一区二区三区四区 | 成人黄色网址 | 国产亚洲精品视频中文字幕 | 中文字幕在线一区 | 香蕉视频在线观看男女 | 福利视频区 | 国产精品视频观看 | 精品一区二区三 | 牛牛影视午夜免费福利 | 宅男噜噜噜66一区二区 | 欧美精品日日鲁夜夜 | 久久国产在线视频 | 在线色片| 久久久精品 | 成年女人免费看一级人体片 | 在线亚洲欧美性天天影院 | 一级黄毛片 | 女人牲交视频一级毛片 | 99视频精品国在线视频艾草 | 中文字幕综合在线 | 暴劫倾情无删减在线播放 | 亚洲成人免费看 | 狠狠狠色丁香婷婷综合久久五月 | 免费一级a毛片夜夜看 | 色久综合 |