正在加载图片...
void DoubleQueue<Type>: EnDoublequeuel const Type& item)& 队列空,新结点成为第一个结点 new Double QueueNode<Type>( item, end1 ) 队列不空,新结点链入endl之后 endl-link new DoubleQueueNode<type>( item, end1-> ink ) template <class Type ∥从人队列end端插 void Doublequeue<type>: EnDoubleQueue2 const Type& item )t nd2 =end2->link = new Double QueueNode<Type>( item, end1 ) 队列的删除函数 Type Doublequeue<Type> DeDouble queue (t if( TeMpt()) return{cout<<"队列空,不能删除!"<<endl; return0;} DoubleQueueNode<type> 'p=endl->link ∥被删除结点 end1->ink =p->link ∥重新链接 Type revalue = p->data: delete p: /删除end后的结点p if( Is Empty()end2 =endl; return revalue: 读取队列endl端元素的内容 template <class Type> Type Doublequeue<Type>: GetFront()i assert(!sEmpry(; return endl->link->data; 置空队列 template <class Type> void queues ke Empry(i 逐个删除队列中的结点,包括表头结点 while endl I=endl->ink )p=endl; endl endl->ink; delete p: j 4-14试建立一个继承结构,以栈、队列和优先级队列为派生类,建立它们的抽象基类一一Bqg类。写出各 个类的声明。统一命名各派生类的插入操作为Add,删除操作为 Remove,存取操作为Get和Pa,初始化 操作为 MakeEmpry,判空操作为Empy,判满操作为Fl,计数操作为 Length 【解答】 Bag类的定义 template<class Type> class Bag t Bag( int s== DefauliSie ) 构造函数 ∥析构函数 virtual void Add( const Type& item ) 插入函数 virtual Type Remove (: ∥删除函数 virtual int Is Empty(i return top==-1: ∥判空函数void DoubleQueue<Type> :: EnDoubleQueue1 ( const Type& item ) { if ( end1 == end1->link ) //队列空, 新结点成为第一个结点 end2 = end1->link = new DoubleQueueNode<Type> ( item, end1 ); else //队列不空, 新结点链入 end1 之后 end1->link = new DoubleQueueNode<Type> ( item, end1->link ); } template <class Type> //从队列 end2 端插入 void DoubleQueue<Type> :: EnDoubleQueue2 ( const Type& item ) { end2 = end2->link = new DoubleQueueNode<Type> ( item, end1 ); } 队列的删除函数 template <class Type> Type DoubleQueue<Type> :: DeDoubleQueue ( ) { if ( IsEmpty ( ) ) return { cout << "队列空, 不能删除!" << endl; return 0; } DoubleQueueNode<Type> *p = end1->link ; //被删除结点 end1->link = p->link; //重新链接 Type retvalue = p->data; delete p; //删除 end1 后的结点 p if ( IsEmpty ( ) ) end2 = end1; return retvalue; } 读取队列 end1 端元素的内容 template <class Type> Type DoubleQueue<Type> :: GetFront ( ) { assert ( !IsEmpty ( ) ); return end1->link->data; } 置空队列 template <class Type> void Queue<Type>:: MakeEmpty ( ) { QueueNode<Type> *p; //逐个删除队列中的结点, 包括表头结点 while ( end1 != end1->link ) { p = end1; end1 = end1->link; delete p; } } 4-14 试建立一个继承结构,以栈、队列和优先级队列为派生类,建立它们的抽象基类——Bag 类。写出各 个类的声明。统一命名各派生类的插入操作为 Add,删除操作为 Remove,存取操作为 Get 和 Put,初始化 操作为 MakeEmpty,判空操作为 Empty,判满操作为 Full,计数操作为 Length。 【解答】 Bag 类的定义 template<class Type> class Bag { public: Bag ( int sz = DefaultSize ); //构造函数 virtual ~Bag ( ); //析构函数 virtual void Add ( const Type& item ); //插入函数 virtual Type *Remove ( ); //删除函数 virtual int IsEmpty ( ) { return top == -1; } //判空函数
<<向上翻页向下翻页>>
©2008-现在 cucdc.com 高等教育资讯网 版权所有