目錄首先準備基本類
class circlearray
}
rear指向的是隊尾元素的後乙個位置,與陣列大小取模可以解決下標越界問題public void addqueue(int n)
//直接將資料加入
arr[rear] = n;
//讓rear後移,這裡必須取模,考慮陣列下標越界
rear = (rear + 1) % maxsize;
}
因為是指向的後乙個位置,所以在新增時可以先存入陣列,再移動下標
front直接指向的就是隊首的位置,因為是迴圈佇列,同樣要考慮下標越界public int getqueue()
int val = arr[front];
front = (front + 1) % maxsize;
return val;
}
出隊後,要向後移動下標,所以不能直接return出隊的元素,先儲存出隊元素
再移動front,最後return儲存的出隊元素
public int peekqueue()
return arr[front];
}
public int size()
需要注意的是:
rear的索引在front前面的情況,在普通佇列中rear的索引大於front,可以通過簡單的rear - front得出元素個數
但是迴圈佇列會出現rear的索引小於front的情況,簡單的相減會出現負數的情況,顯然不符合要求,
利用rear+maxsize可使rear的索引大於front,然後相減的結果% maxsize,
(rear + maxsize - front) % maxsize == rear - front
思路:算出佇列有效元素個數,從front位置開始列印,下標向後移動,取模防止下標越界,迴圈遍歷陣列public void showqueue()
// 思路:從front開始遍歷,遍歷多少個元素
for (int i = front; i < front + size(); i++)
}
public boolean isfull()
陣列不填滿,隊首和隊尾之間空乙個位置,即當元素儲存到佇列倒數第二個元素時,rear指向最後乙個位置,
此時(rear + 1) % maxsize == front
public boolean isempty()
佇列 陣列實現 迴圈佇列
1 陣列佇列.cpp 定義控制台應用程式的入口點。2 3 include4 include5 include abs 6 include7 include8 using namespace std 9 10 定義乙個佇列的結構體11 struct myqueue12 17 18 規則說明 19 nh...
陣列實現迴圈佇列
1 動態陣列型別 typedef struct qnode queue 1 分配結構體內存與陣列記憶體 queue initialize1 相應main函式 int main 2 只分配陣列記憶體不分配結構記憶體 int initialize2 queue q 相應main函式 int main 2...
迴圈陣列實現佇列
佇列是先進先出 fifo 模式,從隊尾加入元素的操作叫入隊,從隊首刪除元素的操作叫出隊 設定兩個指標分別為front指向隊首,real指向隊尾。開始時front和real分別為 1。當有元素入隊時real 1 當有元素出隊時front 1.public class queuesimulation s...