正在加载图片...
删除函数 emplate<class Type> Type Queue<type>: DeQueue (i ( IsEmpry () ∥判断队列是否不空,空则出错处理 front=(front +1)% /队头位置进1,队头指针指示实际队头的前一位置 ∥标志改0,表示栈不满 return @fron; ∥返回原队头元素的值 读取队头元素函数 template<class Type> Type Queue<Type>: GetFront (i assert(! IsEmpty()); ∥判断队列是否不空,空则出错处理 return o[front+ 1)% m]: ∥返回队头元素的值 4-11若使用循环链表来表示队列,p是链表中的一个指针。试基于此结构给出队列的插λ( enqueue)和删除 ( dequeue)算法,并给出p为何值时队列空。 【解答】 链式队列的类定义 template <class Type> class queue ∥链式队列类的前视定义 late <class Type> class QueueNode i ∥链式队列结点类定义 class Queue<Type> Type data; ∥数据域 QueueNode<Type ∥链域 OueueNode( Type d=0, OueteNode=NULL):da(d,hmk(D{}m构造函数 template <class Type> class Queue i ∥链式队列类定义 publie Queue(:P(NULL )0 ∥构造函数 -Queue (i ∥析构函数 void EnQueue const Type item ) 将iem加入到队列中 Type DeQueue ( 删除并返回队头元素 Type GetFront ( M查看队头元素的值 void Make Empty o: ∥置空队列,实现与~ Queue()相同 int IsEmpty()const( return P== NULL; j ∥判队列空否 vate: QueueNode<Type> *p; /队尾指针(在循环链表中) 队列的析构函数 template <class Type> Queue<Type>: -Queue (i 队列的析构函数删除函数 template<class Type> Type Queue<Type> :: DeQueue ( ) { assert ( ! IsEmpty ( ) ); //判断队列是否不空,空则出错处理 front = ( front + 1 ) % m; //队头位置进 1, 队头指针指示实际队头的前一位置 tag = 0; //标志改 0, 表示栈不满 return Q[front]; //返回原队头元素的值 } 读取队头元素函数 template<class Type> Type Queue<Type> :: GetFront ( ) { assert ( ! IsEmpty ( ) ); //判断队列是否不空,空则出错处理 return Q[(front + 1) % m]; //返回队头元素的值 } 4-11 若使用循环链表来表示队列,p 是链表中的一个指针。试基于此结构给出队列的插入(enqueue)和删除 (dequeue)算法,并给出 p 为何值时队列空。 【解答】 链式队列的类定义 template <class Type> class Queue; //链式队列类的前视定义 template <class Type> class QueueNode { //链式队列结点类定义 friend class Queue<Type>; private: Type data; //数据域 QueueNode<Type> *link; //链域 public: QueueNode ( Type d = 0, QueueNode *l = NULL ) : data (d), link (l) { } //构造函数 }; template <class Type> class Queue { //链式队列类定义 public: Queue ( ) : p ( NULL ) { } //构造函数 ~Queue ( ); //析构函数 void EnQueue ( const Type & item ); //将 item 加入到队列中 Type DeQueue ( ); //删除并返回队头元素 Type GetFront ( ); //查看队头元素的值 void MakeEmpty ( ); //置空队列,实现与~Queue ( ) 相同 int IsEmpty ( ) const { return p == NULL; } //判队列空否 private: QueueNode<Type> *p; //队尾指针(在循环链表中) }; 队列的析构函数 template <class Type> Queue<Type>::~Queue ( ) { //队列的析构函数
<<向上翻页向下翻页>>
©2008-现在 cucdc.com 高等教育资讯网 版权所有