隊(duì)列特點(diǎn):先進(jìn)先出

創(chuàng)新互聯(lián)是一家專注于成都網(wǎng)站制作、網(wǎng)站建設(shè)與策劃設(shè)計(jì),峨邊彝族網(wǎng)站建設(shè)哪家好?創(chuàng)新互聯(lián)做網(wǎng)站,專注于網(wǎng)站建設(shè)10多年,網(wǎng)設(shè)計(jì)領(lǐng)域的專業(yè)建站公司;建站業(yè)務(wù)涵蓋:峨邊彝族等地區(qū)。峨邊彝族做網(wǎng)站價(jià)格咨詢:13518219792
隊(duì)列可以使用數(shù)組或鏈表來實(shí)現(xiàn)
數(shù)組模擬隊(duì)列
隊(duì)列本身是有序列表,若使用數(shù)組的結(jié)構(gòu)來存儲(chǔ)隊(duì)列的數(shù)據(jù),則隊(duì)列數(shù)組的聲明如下,其中maxSize是該隊(duì)列的最大容量。
因?yàn)殛?duì)列的輸出、輸入是分別從前后端來處理,因此需要兩個(gè)變量front及rear分別記錄隊(duì)列前后端的下標(biāo),front會(huì)隨著數(shù)據(jù)輸出而改變,rear會(huì)隨著數(shù)據(jù)的輸入而改變。
使用數(shù)組實(shí)現(xiàn)隊(duì)列
front ?默認(rèn)-1,隊(duì)首
rear 默認(rèn)-1,隊(duì)尾
maxSize 隊(duì)列的最大容量
加數(shù)據(jù),在隊(duì)尾加,rear+1
取數(shù)據(jù),在隊(duì)首取,front+1
添加到隊(duì)列,分析
1,將rear+1,尾指針后移(當(dāng)rear==front時(shí),隊(duì)列為空,可存入;非空時(shí),當(dāng)rear=maxSize-1時(shí),隊(duì)列已滿,無法存入)
代碼實(shí)現(xiàn):
package?com.datastack.datastack.queue;
import?java.util.Scanner;
/*
?*?隊(duì)列(數(shù)組實(shí)現(xiàn))
?*/
public?class?ArrQueue?{
private?int?maxSize;//隊(duì)列最大值
private?int?front;//隊(duì)首,指向隊(duì)列首的前一個(gè)位置
private?int?rear;//隊(duì)尾,指向隊(duì)列尾的序號(hào)
private?int[]?arr;//存放隊(duì)列數(shù)據(jù)的數(shù)組
/**
?*?創(chuàng)建隊(duì)列
?*?@param?maxSize
?*/
public?ArrQueue(int?maxSize){
this.maxSize?=?maxSize;
this.arr?=?new?int[maxSize];
this.front?=?-1;
this.rear?=?-1;
}
/**
?*?判斷隊(duì)列是否已滿
?*?@return
?*/
public?boolean?isFull(){
return?rear?==?maxSize?-?1;
}
/**
?*?判斷隊(duì)列是否為空
?*?@param?args
?*/
public?boolean?isEmpty(){
return?rear?==?front;
}
/**
?*?添加數(shù)據(jù)到隊(duì)列
?*?@param?args
?*/
public?void?addQueue(int?n){
//判斷隊(duì)列是否滿
if(isFull()){
System.out.println("隊(duì)列已滿,不能加入數(shù)據(jù)。");
return;
}
rear++;
arr[rear]?=?n;
}
/**
?*?出隊(duì)列
?*?@param?args
?*/
public?int?getQueue(){
//判斷隊(duì)列是否為空
if(isEmpty()){
//通過拋出異常
throw?new?RuntimeException("隊(duì)列空,不能取數(shù)據(jù)");
}
front++;
return?arr[front];
}
/**
?*?顯示隊(duì)列數(shù)據(jù)
?*?@param?args
?*/
public?void?showQueque(){
if(isEmpty()){
System.out.println("隊(duì)列為空。");
return;
}
for(int?i=0;i<arr.length;i++){
System.out.printf("arr[%d]=%d\t",i,arr[i]);
}
}
/**
?*?顯示隊(duì)頭
?*?@param?args
?*/
public?int?headQueue(){
if(isEmpty()){
throw?new?RuntimeException("隊(duì)列為空。");
}
return?this.arr[front+1];
}
public?static?void?main(String[]?args)?{
//創(chuàng)建一個(gè)隊(duì)列
ArrQueue?arrQueue?=?new?ArrQueue(3);
char?key?=?'?';//接收用戶輸入
Scanner?scanner?=?new?Scanner(System.in);
boolean?loop?=?true;
while(loop){
System.out.println("s(show):顯示隊(duì)列");
System.out.println("e(exit):退出程序");
System.out.println("a(add):添加數(shù)據(jù)到隊(duì)列");
System.out.println("g(get):從隊(duì)列取出數(shù)據(jù)");
System.out.println("h(head):查看隊(duì)列頭的數(shù)據(jù)");
key?=?scanner.next().charAt(0);
switch?(key)?{
case?'s'://顯示隊(duì)列值
arrQueue.showQueque();
break;
case?'a'://入隊(duì)
System.out.println("請輸入一個(gè)數(shù)");
int?value?=?scanner.nextInt();
arrQueue.addQueue(value);
break;
case?'g'://出隊(duì)
try?{
int?res?=?arrQueue.getQueue();
System.out.println(res);
}?catch?(Exception?e)?{
System.out.println(e.getMessage());
}
break;
case?'h'://打印對首
try?{
int?res?=?arrQueue.headQueue();
System.out.println(res);
}?catch?(Exception?e)?{
System.out.println(e.getMessage());
}
break;
case?'e'://退出程序
scanner.close();
loop?=?false;
break;
default:
break;
}
}
System.out.println("程序退出");
}
}
本文名稱:04-隊(duì)列實(shí)現(xiàn)思路
網(wǎng)頁路徑:http://www.chinadenli.net/article22/isjejc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供ChatGPT、域名注冊、網(wǎng)站改版、搜索引擎優(yōu)化、網(wǎng)站收錄、網(wǎng)頁設(shè)計(jì)公司
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)