1)佇列是乙個有序列表,可以用陣列或鍊錶來實現.
2)遵循先入先出原則.即: 先存入佇列的資料,要先取出來.後存入後取.(模擬火車進隧道)
3)佇列的插入操作稱為入隊(push),刪除操作稱為出隊(pop)。
4)示意圖:(使用陣列模擬佇列示意圖)
5)由於普通佇列會產生「假溢位」現象,所以我們採用環形佇列來解決這個問題
示意圖:(圖搞明白了**才會得心應手)
普通佇列: 空 front = rear ; 滿 rear = maxsize-1;
迴圈佇列: 空 front = rear; 滿 (rear+1)%maxsize = front ; (迴圈佇列需要空出乙個位置保證迴圈進行)
進隊: rear = (rear+1)%maxsize ; 出隊 front = (front+1)%maxsize ;
6)實現**:(迴圈佇列)
7)測試:class circlearray
// 判斷佇列是否滿
public boolean isfull()
// 判斷佇列是否為空
public boolean isempty()
// 新增資料到佇列
public void addqueue(int n)
//直接將資料加入
arr[rear] = n;
//將 rear 後移, 這裡必須考慮取模
rear = (rear + 1) % maxsize; }
// 獲取佇列的資料, 出佇列
public int getqueue()
// 這裡需要分析出 front是指向佇列的第乙個元素
// 1. 先把 front 對應的值保留到乙個臨時變數
// 2. 將 front 後移, 考慮取模
// 3. 將臨時儲存的變數返回
int value = arr[front];
front = (front + 1) % maxsize;
return value; }
// 顯示佇列的所有資料
public void showqueue()
// 思路:從front開始遍歷,遍歷多少個元素
// 動腦筋
for (int i = front; i < front + size() ; i++) }
// 求出當前佇列有效資料的個數
public int size()
// 顯示佇列的頭資料, 注意不是取出資料
public int headqueue()
return arr[front];
}}
實際上,對於大部分資源有限的場景,當沒有空閒資源時,基本上都可以通過「佇列」這種資料結構來實現請求排隊。public class circlearrayqueuedemo catch (exception e)
break;
case 'h': // 檢視佇列頭的資料
try catch (exception e)
break;
case 'e': // 退出
scanner.close();
loop = false;
break;
default:
break;
}} system.out.println("程式退出~~");
}}
演算法筆記 佇列
是什麼 什麼是佇列 為什麼為什麼有佇列這種資料結構 怎麼學習佇列這種資料結構 順序佇列class arrayqueue 入隊 public boolean enqueue string item last last first first 0 queuelist last item last ret...
演算法筆記 佇列
佇列 先進先出 食堂裡打飯,先入隊的人 排在最前的人 則最早打飯出隊。用隊首指標front 出隊 來指向隊首元素的前乙個位置,而rear 入隊 隊尾指標來指向隊尾元素 當用陣列來實現佇列時,隊首指標front和隊尾指標rear為int變數 陣列下標從0開始 而使用鍊錶來實現佇列時,則為int 型變數...
演算法筆記 佇列概念
佇列 queue 時一種先進先出的資料結構 以食堂排隊打飯為例,每個人都從隊伍最後面排起,隊伍最前面的人打完飯出隊 佇列總是從隊尾加入元素,而從隊首移除元素,滿足先進先出的規則 注意!使用乙個隊首元素front來指向隊首元素的前乙個位置 使用乙個隊尾指標rear來指向隊尾元素 和棧類似,當使用陣列來...