数据结构实验(C++)之队列(1)

    xiaoxiao2023-11-20  170

    (1) 假设以数组 sequ[MaxSize] 存放环形队列的元素,同时Rear和Len分别指示 环形队列中队尾元素的位置和内含元素的个数。设计相应的入队和出队算法。

    代码:

    #include <iostream> using namespace std; const int MaxSize = 10; template <class T> class CirQueue { public: CirQueue() { rear=MaxSize-1; len=0; } ~CirQueue() { } void EnQueue(T x); T DeQueue(); private: T data[MaxSize]; T rear; int len; }; template<class T> void CirQueue<T>::EnQueue(T x) { if(len==MaxSize) { throw 'x'; } rear=(rear+1)%MaxSize; data[rear]=x; len++; return; } template<class T> T CirQueue<T>::DeQueue() { int x,First; if(len==0) { throw 'y'; } First=((rear+MaxSize)-len+1)%MaxSize; x=data[First]; len--; return x; } int main() { int i; int A[10]={1,2,3,4,5,6,7,8,9,10}; CirQueue<int> CQ; try{ cout<<"队列开始入队:"<<endl; for(i=0;i<sizeof(A)/sizeof(int);i++) { CQ.EnQueue(A[i]); cout<<A[i]<<" 入队"<<endl; } }catch(char x) { cout<<"队列已满! "<<A[i]<<" 不能入队!"<<endl; } try{ cout<<"队列开始出队:"<<endl; for(i=0;i<sizeof(A)/sizeof(int);i++) { cout<<CQ.DeQueue()<<" 出队"<<endl; } }catch(char y) { cout<<"队列已空,不能出队!"<<endl; } return 0; }

    最新回复(0)