void push(Element ele);//在队列尾端添加一个元素
Element pop(); //在队列首端删除一个元素,返回被删元素
Element front()const{ return element[0]; } //返回队首元素,但不从队列中删除该元素
//**********found**********
int size()const{ return (__________); } //返回元素个数
void show()const; //显示集合中所有元素
};
void Queue::push(Element ele){
if(tail==MaxLength-1) return; //空间满,不做任何处理
//**********found**********
___________________;
}
Element Queue::pop(){
if(size()==0) exit(1) ; //队列空,不做任何处理
Element tmp=element[0];
for(int i=0; i<tail; i++)
element[i]=element[i+1];
//**********found**********
___________________;
return tmp;
}
void Queue::show()const{
//**********found**********
for(____________________________)
cout<<element[i].n<<' ';
cout<<endl;
}
int main(){
Queue q;
q.push(3);
q.push(8);
q.push(5);
q.push(0);
q.show();
q.pop();
q.pop();
q.push(7);
q.show();
return 0;
}
【参考答案】
(1) tail+ 1
(2) element[++tail] =ele
(3) tail--
(4)int i = 0; ic= tail; i++
考点分析】本题考查的知识点为:类的数据成员和类的成员函数。【解题思路】
题意定义了Element类,表示队列中的元素,它包含一个成员n,表示元素的值;定义了Queue类,表示队列,它包含两个成员:element是动态分配的一个数组,每个元素都是Element类型; tail表示队列尾部的下标值,指向element数组的最后一个元素,当数组为空时, tail的值为-1,所以初始化为-1:另外Queue类还定义了若干成员函数:构造函数为element数组动态分配100个元素空间,初始化tail为-1:析构函数释放element;push()函数向队列中添加一个新元素ele,即将形参ele存放到数组尾部,并将tail自增1; pop()函数将element数组的第一个元素(下标为0)从数组中删除(采用移动后续所有元素的方式),并作为函数返回值返回;front()函数返回队列首元素; size()函数返回当前element数组的元素个数; show)函数将element数组中的元素的n值输出,由上面的分析,补充代码如下:
(1) size()函数返回element数组的元素个数,tail的值是element数组的最后一个元素的下标,所以返回tail+1即可。
(2) push()函数将参数ele插入到队列的尾部,即将ele保存到element数组下标为(tail+1)的位直: element[++tail]=ele;
(3) pop()函数将element数组的首元素保存到tmp变量中,然后遍历element数组,将下标从1开始的元素逐个赋给前一个元素,再把tail的值自减1,tail--;
(4) show)函数需要遍历element数组,然后将元素的n值输出,遍历下标的变量需要定义为i,i初值从0开始,直到等于最后一个元素的下标,即tail。int i=0; i<= tail: i++