正在加载图片...
队满条件(end1+1)%m=end2;∥设endl端顺时针进栈,end2端逆时针进栈 循环队列类定义 template <class Type> class DoubleQueue i ∥循环队列的类定义 Double Queue( int=10 ) DoubleQueue (i delete [V;) void EnQueue Type item, const int end )i Type DeQueue(const int end ) Type GetFront(const int end ) ∥置空队列 int Is Empty ()const( return endl ==end2 ∥判两队列空否 int IsFull const( return(end1+1)% end2;}∥判两队列满否 private int endl, end2; 队列两端的指针 ∥存放队列元素的数组 队列最大可容纳元素个数 构造函数 template <class Type> DoubleQueue<Type>: DoubleQueue( int Sz ) endl (O), end2(0), m(sz)t ∥建立一个最大具有m个元素的空队列。 V=new Type]: ∥创建队列空间 assert(V=0); 断言:动态存储分配成功与否 插入函数 template<class Type> void DoubleQueue<Type>: EnQueue( Type &item, const int end)i assert (!sFull(; if( end ==1)i end1 =(endl 1)%m; 端指针先进1,再按指针进栈 Lendl= item; 1指向实际队头位置 else i Vlend2]=item ∥end2端先进队列,指针再进1 end2=( end2-1 +m)% end2指向实际队头的下一位置 删除函数 template<class Type> e Queue<Type>:: DeQueue( const int end)( assert(!IsEmpty ())i Type& temp; ){26 队满条件 ( end1 + 1 ) % m = end2; //设 end1 端顺时针进栈,end2 端逆时针进栈 循环队列类定义 #include <assert.h> template <class Type> class DoubleQueue { //循环队列的类定义 public: DoubleQueue ( int=10 ); ~DoubleQueue ( ) { delete [ ] V; } void EnQueue ( Type & item, const int end ); Type DeQueue (const int end ); Type GetFront (const int end ); void MakeEmpty ( ) { end1 = end2 = 0; } //置空队列 int IsEmpty ( ) const { return end1 == end2; } //判两队列空否 int IsFull ( ) const { return (end1+1) % m == end2; } //判两队列满否 private: int end1, end2; //队列两端的指针 Type *V; //存放队列元素的数组 int m; //队列最大可容纳元素个数 } 构造函数 template <class Type> DoubleQueue<Type>:: DoubleQueue ( int sz ) : end1 (0), end2 (0), m (sz) { //建立一个最大具有 m 个元素的空队列。 V = new Type[m]; //创建队列空间 assert ( V != 0 ); //断言: 动态存储分配成功与否 } 插入函数 template<class Type> void DoubleQueue<Type> :: EnQueue ( Type &item, const int end ) { assert ( !IsFull ( ) ); if ( end == 1 ) { end1 = ( end1 + 1 ) % m; //end1 端指针先进 1, 再按指针进栈 V[end1] = item; //end1 指向实际队头位置 } else { V[end2] = item; //end2 端先进队列, 指针再进 1 end2 = ( end2 - 1 + m ) % m; //end2 指向实际队头的下一位置 } } 删除函数 template<class Type> Type DoubleQueue<Type> :: DeQueue ( const int end ) { assert ( !IsEmpty ( ) ); Type& temp; if ( end == 1 ) {
<<向上翻页向下翻页>>
©2008-现在 cucdc.com 高等教育资讯网 版权所有