資料結構-佇列
阿新 • • 發佈:2020-09-11
#include <iostream> #include <vector> #include <algorithm> class Myqueue { public: Myqueue(); Myqueue(int k); ~Myqueue(); int GetFront();//返回隊首元素,不存在返回-1 int GetBack();//返回隊尾元素,不存在返回-1 bool enQueue(int value);//向迴圈佇列插入一個元素,成功返回真 bool deQueue();//從佇列刪除一個元素,成功返回真 bool isEmpty();//檢查佇列是否為空 bool isFull();//檢查佇列是否為滿 void showqueue(vector<int>& Target,int rear,int front);//列印佇列全部元素 private: int rear; int front; int count; std::vector<int> nums; }; Myqueue::Myqueue():rear(0),front(0),count(0) { nums.resize(128); } Myqueue::~Myqueue() { } Myqueue::Myqueue(int k) :rear(0), front(0), count(0) { nums.resize(k); } bool Myqueue::enQueue(int value) {//向迴圈佇列插入一個元素,成功返回真 if (count == nums.size()) { return false; } nums[rear++] = value; rear %= nums.size();//只要start小於nums.size(),start就等於自己,要是start==nums.size(),那start就等於0 ++count; return true; } bool Myqueue::deQueue() {//從佇列刪除一個元素,成功返回真 if (count == 0) { return false; } nums[front++] = 0; front %= nums.size(); --count; return true; } int Myqueue::GetFront() {//返回隊首元素 if (count == 0) return -1; return nums[front]; } int Myqueue::GetBack() {//返回隊尾元素 if (count == 0) return -1; return nums[(rear-1+nums.size())%nums.size()]; } bool Myqueue::isEmpty() {//判斷佇列是否為空 return count == 0; } bool Myqueue::isFull() {//判斷佇列是否為滿 return nums.size() == count; } int main() { Myqueue Queue(10); for (int i = 1; i < 10; ++i) { Queue.enQueue(i); } Queue.deQueue(); Queue.enQueue(10); Queue.enQueue(11); Queue.deQueue(); Queue.enQueue(12); std::cout << Queue.GetFront()<<std::endl; std::cout << Queue.GetBack() << std::endl; return 0; }