#includeusing namespace std;
templateclass Queue {
public:
Queue();
Queue(int n);
Queue(Queue& Queue);
~Queue();
T& top();
Queue& push(const T& elem);
Queue& pop();
void reserve(int num);
int size();
int capciaty() {return cap; }
int is_empty() {return in == out; }
bool is_full() {return (in+1)%cap == out; }
void clear() {this->~Queue();}
T* arr;
private:
int out; //出??? int in; //進(jìn)??? int cap;
};
//默認(rèn)構(gòu)造函數(shù)
templateQueue::Queue() {
cap = 0;
out = 0;
arr = nullptr;
}
//一般構(gòu)造函數(shù)
templateQueue::Queue(int n) {
cap = n;
out = 0;
in = 0;
arr = new T[n]{};
}
//拷貝構(gòu)造函數(shù)(前淺貝)
templateQueue::Queue(Queue& Queue) {
cap = Queue.cap;
out = Queue.out;
in = Queue.in;
this->arr = Queue.arr;
}
//析構(gòu)函數(shù)
templateQueue::~Queue() {
if ( cap == 0 ) {
return;
}
cap = 0;
out = 0;
in = 0;
delete [] arr;
arr = nullptr;
}
//訪問棧頂
templateT& Queue::top() {
if ( is_empty() ) {
cout<< "[error]: Queue has no element"<< endl;
}
return *(arr+out);
}
//在棧頂添加一個(gè)元素
templateQueue& Queue::push(const T& elem) {
if ( is_full() ) {
reserve(2*cap);
}
arr[in] = elem;
in = (in+1) % cap;
return *this;
}
//棧頂彈出
templateQueue& Queue::pop() {
if ( is_empty() ) {
cout<< "[error]: don't try to pop a empty Queue"<< endl;
return *this;
}
out = (out+1) % cap;
return *this;
}
//獲取當(dāng)前元素個(gè)數(shù)
templateint Queue::size() {
if ( is_empty() )
return 0;
else if ( is_full() ) {
return cap-1;
}
if ( out<= in )
return in-out;
else
return cap-(out-in);
}
//增加容量
templatevoid Queue::reserve(int num) {
if ( num< cap ) {
cout<< "[warning]: input of reserve() function shuold lager than capciaty"<< endl;
return;
}
T *arr_ = new T[num]{};
for ( int i = 0; i< cap; i++ )
arr_[i] = arr[i];
delete [] arr;
arr = arr_;
arr_ = nullptr;
cap = num;
in = out + size();
}
int main() {
QueueQueue(3);
if ( Queue.is_empty() )
cout<< "Queue is a empty queue"<< endl;
Queue.push(8);
cout<< "top="<< Queue.top()<< ", 容量="<< Queue.capciaty()<< ", 元素個(gè)數(shù)="<< Queue.size()<< endl;
Queue.push(4);
cout<< "top="<< Queue.top()<< ", 容量="<< Queue.capciaty()<< ", 元素個(gè)數(shù)="<< Queue.size()<< endl;
Queue.push(5);
cout<< "top="<< Queue.top()<< ", 容量="<< Queue.capciaty()<< ", 元素個(gè)數(shù)="<< Queue.size()<< endl;
Queue.push(5);
cout<< "top="<< Queue.top()<< ", 容量="<< Queue.capciaty()<< ", 元素個(gè)數(shù)="<< Queue.size()<< endl;
Queue.pop();
Queue.pop();
cout<< "top="<< Queue.top()<< ", 容量="<< Queue.capciaty()<< ", 元素個(gè)數(shù)="<< Queue.size()<< endl;
Queue.clear();
cout<< "top="<< Queue.top()<< ", 容量="<< Queue.capciaty()<< ", 元素個(gè)數(shù)="<< Queue.size()<< endl;
}
創(chuàng)新互聯(lián)公司主要業(yè)務(wù)有網(wǎng)站營(yíng)銷策劃、網(wǎng)站設(shè)計(jì)、成都網(wǎng)站設(shè)計(jì)、微信公眾號(hào)開發(fā)、重慶小程序開發(fā)、成都h5網(wǎng)站建設(shè)、程序開發(fā)等業(yè)務(wù)。一次合作終身朋友,是我們奉行的宗旨;我們不僅僅把客戶當(dāng)客戶,還把客戶視為我們的合作伙伴,在開展業(yè)務(wù)的過程中,公司還積累了豐富的行業(yè)經(jīng)驗(yàn)、全網(wǎng)營(yíng)銷推廣資源和合作伙伴關(guān)系資源,并逐漸建立起規(guī)范的客戶服務(wù)和保障體系。 你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級(jí)服務(wù)器適合批量采購(gòu),新人活動(dòng)首月15元起,快前往官網(wǎng)查看詳情吧
當(dāng)前文章:C++手動(dòng)實(shí)現(xiàn)隊(duì)列(queue)(課后作業(yè)版)-創(chuàng)新互聯(lián)
瀏覽路徑:http://aaarwkj.com/article26/gcejg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供電子商務(wù)、服務(wù)器托管、面包屑導(dǎo)航、網(wǎng)站設(shè)計(jì)公司、品牌網(wǎng)站建設(shè)、網(wǎng)站設(shè)計(jì)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容