目錄
佇列介紹
陣列模擬佇列
思路:**:
問題分析並優化:
陣列模擬環形佇列
思路:**:
有序列表,可以用陣列或鍊錶來實現
先入先出(fifo)
定義乙個佇列
// 定義乙個佇列
public class arrayqueue
// 判斷佇列是否滿
public boolean iffull()
// 判斷佇列是否為空
public boolean isempty()
// 新增資料到佇列
public void addqueue(int n)
// 讓隊尾後移
rear++;
arr[rear] = n;
}// 獲取佇列的資料,出佇列
public int getqueue()
//front 後移
front++;
return arr[front];
}// 顯示對列的所有資料
public void showqueue()
for (int i = 0; i < arr.length; i++)
}// 獲取佇列的頭資料,注意不是取出資料
public int headqueue()
// 取出佇列頭資料
return arr[front + 1];}}
進行測試:注意idea的測試型別不能使用scanner,下面的方法要寫在main方法裡
// 建立乙個佇列
arrayqueue queue = new arrayqueue(3);
// 接收使用者輸入
char key = ' ';
scanner scanner = new scanner(system.in);
boolean looop = true;
// 輸出乙個選單
while (looop) catch (exception e)
break;
case 'h':
try catch (exception e)
break;
case 'e':
scanner.close();
looop = false;
break;
default:
break;}}
system.out.println("程式已經退出");
}
問題:以上**實現的佇列,陣列使用一次就不能用了,沒有達到復用的效果
優化:將這個陣列使用演算法,改進成乙個環形的佇列 ,取模:%
public class circlearrayqueue
// 判斷佇列是否滿
public boolean iffull()
// 判斷佇列是否為空
public boolean isempty()
// 新增資料到佇列
public void addqueue(int n)
arr[rear] = n;
// 讓隊尾後移
rear = (rear+1) % maxsize;
}// 獲取佇列的資料,出佇列
public int getqueue()
//front 後移
int value = arr[front];
front = (front +1) % maxsize;
return value;
}// 顯示對列的所有資料
public void showqueue()
for (int i = front; i < front + size(); i++)
}// 求出當前佇列有效資料個數
public int size()
// 獲取佇列的頭資料,注意不是取出資料
public int headqueue()
// 取出佇列頭資料
return arr[front ];}}
同理進行測試即可。 C語言資料結構之FIFO
fifo first in first out 插入在表的一端進行,而刪除在表的另一端進行,我們將這種資料結構稱為隊或者佇列 就像排隊一樣,排在前面的先出,很形象 允許插入的一端稱為隊尾 rear 允許刪除的一端稱為 front 通常我們用得較多的是迴圈佇列 也就是當rear達到fifo的最大值後又...
資料結構 佇列
一 佇列的迴圈陣列實現。1 初始化 空佇列。令rear front 0。2 入佇列 約定rear指向佇列尾元素的下乙個位置。入佇列時,先判斷佇列是否已滿,而後將array rear x 然後rear 3 出佇列 約定front指向佇列的首元素位置。出佇列時,先判斷佇列是否為空,而後返回隊首元素re ...
資料結構 佇列
資料參考自 資料結構c 語言描述 佇列是一種先進先出的資料結構,這與棧正好相反。下例是簡單的queue實現 queue.h檔案 ifndef queue h define queue h include include 資料元素結構 自定義 struct datatype 佇列元素最大數 const...