-
數(shù)據(jù)結(jié)構(gòu)是指 一種或多種特定關(guān)系的數(shù)據(jù)元素的集合查看全部
-
模擬排號機(jī),只需改動一下內(nèi)容,運行結(jié)果如圖 void MyQueue::QueueTraverse () { for(int i=m_iHead;i<m_iQueueLen+m_iHead;i++)//m_iQueueLen+m_iHead保證循環(huán)次數(shù)不會出錯,防止當(dāng)頭為1,長度為3時只能循環(huán)兩次,隊列長度指揮循環(huán)次數(shù) { m_pQueue[i%m_iQueueCapacity].printInfo ();//直接調(diào)用類中有的打印函數(shù),不需要再用cout cout<<"前面還有"<<(i-m_iHead)<<"人"<<endl;//模擬排號機(jī) } }查看全部
-
主函數(shù)中的應(yīng)用: #include<iostream> #include<stdlib.h> #include"MyQueue.h" #include"Customer.h" using namespace std; int main(void) { MyQueue *p=new MyQueue(4); Customer c1("marry",20);//因為不再是int類型所以要定義對象 Customer c2("jack",22); Customer c3("tom",24); p->EnQueue (c1); p->EnQueue (c2); p->EnQueue (c3); p->QueueTraverse (); //在隊列中刪除元素并且獲得元素的值 Customer c4("",0);//定義一個這樣的元素c4,c4是一個沒有其他值得對象,用這個對象來獲取隊列的第一個元素,相當(dāng)于之前的int e=0; p->DeQueue (c4);//把第一個元素給c4,在刪掉第一個元素 c4.printInfo ();//打印c4(即第一個元素) p->QueueTraverse ();//遍歷剩余兩個 delete p; p=NULL; return 0; }查看全部
-
環(huán)形隊列的實際應(yīng)用,定義customer類 #ifndef CUSTOMER_H #define CUSTOMER_H #include<string> using namespace std; class Customer { public: Customer(string name="",int age=0);//需要有默認(rèn)構(gòu)造函數(shù)去使隊列的構(gòu)造函數(shù)成立,每個參數(shù)賦初值 void printInfo() const; private: string m_strName; int m_iAge; }; #endif #include<iostream> #include<stdlib.h> #include<string> #include"Customer.h" using namespace std; Customer::Customer(string name,int age) { m_strName=name; m_iAge=age; } void Customer::printInfo() const { cout<<"名字"<<m_strName<<endl; cout<<"年齡"<<m_iAge<<endl; cout<<endl; } 因為不再是int類型,所以隊列類中要改變一些數(shù)據(jù)類型,函數(shù)類型,如下: (public下的)bool EnQueue(Customer element);//Customer類型的元素,下同,實現(xiàn)要保持一致(略) bool DeQueue(Customer &element); (private下的)Customer *m_pQueue;//Customer類型的指針 遍歷的循環(huán)體要有所改動: //實際應(yīng)用循環(huán)體要有所改動 void MyQueue::QueueTraverse () { for(int i=m_iHead;i<m_iQueueLen+m_iHead;i++)//m_iQueueLen+m_iHead保證循環(huán)次數(shù)不會出錯,防止當(dāng)頭為1,長度為3時只能循環(huán)兩次,隊列長度指揮循環(huán)次數(shù) { m_pQueue[i%m_iQueueCapacity].printInfo ();//直接調(diào)用類中有的打印函數(shù),不需要再用cout } }查看全部
-
接圖片代碼: p->QueueTraverse ();//發(fā)現(xiàn)至此不能遍歷出來,因此遍歷實現(xiàn)有誤,需更正 【更正: void MyQueue::QueueTraverse () { for(int i=m_iHead;i<m_iQueueLen+m_iHead;i++)//m_iQueueLen+m_iHead保證循環(huán)次數(shù)不會出錯,防止當(dāng)頭為1,長度為3時只能循環(huán)兩次,隊列長度指揮循環(huán)次數(shù) { //cout<< m_pQueue[i%m_iQueueLen] <<endl;//防止下標(biāo)i溢出,環(huán)形隊列頭不一定從[0]開始 cout<< m_pQueue[i%m_iQueueCapacity] <<endl;//更正應(yīng)對m_iQueueCapacity取余,對常數(shù)容量取余 } cout<<endl;//為了清晰 }】 p->ClearQueue (); p->QueueTraverse (); p->EnQueue (20); p->EnQueue (30); p->QueueTraverse (); delete p; p=NULL; return 0; }查看全部
-
環(huán)形隊列實現(xiàn)部分二:(重點部分) bool MyQueue::EnQueue (int element) { if(QueueFull()){return false;} else { m_pQueue[m_iTail]=element; m_iTail++; m_iTail=m_iTail%m_iQueueCapacity;//防止下標(biāo)溢出 m_iQueueLen++;//長度隨時改變 return true;//告訴系統(tǒng)插入成功 } } bool MyQueue::DeQueue (int &element) { if(QueueEmpty()){return false;} else { element=m_pQueue[m_iHead];//首元素摘出 m_iHead++;//改變頭位置 m_iHead=m_iHead%m_iQueueCapacity;//防止下標(biāo)溢出 m_iQueueLen--;//減少個數(shù) return true; } } void MyQueue::QueueTraverse () { for(int i=m_iHead;i<m_iQueueLen;i++) { cout<< m_pQueue[i%m_iQueueLen] <<endl;//防止下標(biāo)i溢出,環(huán)形隊列頭不一定從[0]開始 } }查看全部
-
環(huán)形隊列實現(xiàn)部分一: #include"MyQueue.h" #include<iostream> using namespace std; MyQueue::MyQueue(int queueCapacity)//構(gòu)造函數(shù)用來創(chuàng)建隊列 { m_iQueueCapacity=queueCapacity; /*m_iHead=0; m_iTail=0; m_iQueueLen=0;*/ ClearQueue(); m_pQueue=new int[m_iQueueCapacity]; } MyQueue::~MyQueue () { delete []m_pQueue; m_pQueue=NULL; } void MyQueue::ClearQueue () { m_iHead=0; m_iTail=0; m_iQueueLen=0; } bool MyQueue::QueueEmpty () const { if(m_iQueueLen==0) { return true; } else { return false; } //return m_iQueueLen==0?true:false; } int MyQueue::QueueLength () const { return m_iQueueLen; } bool MyQueue::QueueFull () const { if(m_iQueueLen==m_iQueueCapacity) {return true;} else{return false;} }查看全部
-
隊列的定義 c++//c對比 c++有自己的數(shù)據(jù)成員所以不需要參數(shù),而要指明數(shù)據(jù)類型,因為已經(jīng)指明數(shù)據(jù)類型,所以不需要visit函數(shù)(遍歷不同種類型時要用的函數(shù))查看全部
-
數(shù)據(jù)結(jié)構(gòu)概念查看全部
-
隊列 先進(jìn)先出查看全部
-
環(huán)形隊列,,內(nèi)存沒有空著效率高;內(nèi)存中的數(shù)據(jù)也不用整體移動查看全部
-
環(huán)形隊列查看全部
-
隊列的用途查看全部
-
環(huán)形隊列查看全部
-
普通隊列查看全部
舉報
0/150
提交
取消