正在加载图片...
结束 4-9假设以数组Q[m]存放循环队列中的元素,同时以ream和 length分别指示环形队列中的队尾位置和队列 中所含元素的个数。试给出该循环队列的队空条件和队满条件,并写出相应的插入( enqueue)和删除( dequeue) 元素的操作 【解答】 循环队列类定义 #include <assert h> template <class Type> class Queue i ∥循环队列的类定义 Queue( int10 ) void EnQueue(Type item ) Type Dequeue(片 Type GetFront ( 置空队列 int lsEmpry ()const i return length==0;1 ∥判队列空否 int Is Full( const i return length = maxSize; 1 ∥判队列满否 prvate int rear, length: /队尾指针和队列长度 ∥存放队列元素的数组 int maxsize; /队列最大可容纳元素个数 构造函数 template <class Type Queue<Type>: Queue( int s=): rear(maxsie-1), length(0), maxIe(s=)i ∥建立一个最大具有 maxie个元素的空队列 ents new Type ∥创建队列空间 assert( elements =0); 断言:动态存储分配成功与否 插入函数 template<class Type> void Queue<Type>: EnQueue( Type &item )i assert(! IsFull(): ∥判队列是否不满,满则出错处理 length++ ∥长度加1 rear+1)%max Size; /队尾位置进 elementsrear]= item ∥进队列 删除函数 template<class Type> Type Queue<Type>: DeQueue()i assert(! IsEmpty()); ∥判断队列是否不空,空则出错处理 length; 队列长度减1 return elements[(rear-leng th+max Sie)% maxsice] 返回原队头元素值 结束 4-9 假设以数组 Q[m]存放循环队列中的元素, 同时以 rear 和 length 分别指示环形队列中的队尾位置和队列 中所含元素的个数。试给出该循环队列的队空条件和队满条件, 并写出相应的插入(enqueue)和删除(dlqueue) 元素的操作。 【解答】 循环队列类定义 #include <assert.h> template <class Type> class Queue { //循环队列的类定义 public: Queue ( int=10 ); ~Queue ( ) { delete [ ] elements; } void EnQueue ( Type & item ); Type DeQueue ( ); Type GetFront ( ); void MakeEmpty ( ) { length = 0; } //置空队列 int IsEmpty ( ) const { return length == 0; } //判队列空否 int IsFull ( ) const { return length == maxSize; } //判队列满否 private: int rear, length; //队尾指针和队列长度 Type *elements; //存放队列元素的数组 int maxSize; //队列最大可容纳元素个数 } 构造函数 template <class Type> Queue<Type>:: Queue ( int sz ) : rear (maxSize-1), length (0), maxSize (sz) { //建立一个最大具有 maxSize 个元素的空队列。 elements = new Type[maxSize]; //创建队列空间 assert ( elements != 0 ); //断言: 动态存储分配成功与否 } 插入函数 template<class Type> void Queue<Type> :: EnQueue ( Type &item ) { assert ( ! IsFull ( ) ); //判队列是否不满,满则出错处理 length++; //长度加 1 rear = ( rear +1) % maxSize; //队尾位置进 1 elements[rear] = item; //进队列 } 删除函数 template<class Type> Type Queue<Type> :: DeQueue ( ) { assert ( ! IsEmpty ( ) ); //判断队列是否不空,空则出错处理 length--; //队列长度减 1 return elements[(rear-length+maxSize) % maxSize]; //返回原队头元素值
<<向上翻页向下翻页>>
©2008-现在 cucdc.com 高等教育资讯网 版权所有