-1
我创建班级队列,我需要找到最小值和最大值。最大值是正确的,但最小值不是。为了得到正确的结果,我应该更改 头部和尾部的值的数量?如果我改变他们为零,第一个元素成为对象被创建后最大和最小 queue找到我自己的班级队列的最小值
class myQueue
{
private:
int size, head, tail, *data;
public:
myQueue(int size = 1) :
size(size)
{
data = new int[size];
head = -1;
tail = -1;
}
~myQueue() //
{
delete[] data;
}
void myEnqueue(int el)
{
data[tail] = el;
tail = (tail + 1) % size;
}
int maxEl()
{
int *temp = &data[head];
int max = *temp;
while (*temp != data[tail])
{
temp++;
max = (max > *temp) ? max : *temp;
}
return max;
}
int minEl()
{
int *temp = &data[head];
int min = *temp;
while (*temp != data[tail])
{
temp++;
min = (min < *temp) ? min : *temp;
}
return min;
}
};
int main()
{
myQueue q(5);
int n = 0, el;
while (n < 5)
{
cin >> el;
q.myEnqueue(el);
n++;
}
cout << "The arithmetic mean of the elements = " << q.srArifm(5) << "\n";
cout << "Maximum queue element = " << q.maxEl() << "\n";
cout << "Minimum queue element =" << q.minEl() << "\n";
system("pause");
return 0;
}
什么号码,我应该改变头的值并尾巴得到正确的结果?如果我将它们更改为零,则第一个元素将变为最大值和最小值 – choko
@choko使用修补程序编辑 – mpiatek
@choko检查我的最新编辑。该版本在队列正确填满时处理替换元素 – mpiatek