emplate<class T> class Queue { List<T> queueL; public: Queue(){} ~Queue(){} int Size()const //求长 {return queueL.Size();} int Empty()const //判空 {return queueL.Empty();} const T& Front()const //取队头元素 {return queueL.Front();} void Push(const T& item) //入队 {if(item<=80) queueL.Push_back(item); else queueL.Push_front(item); } T Pop() //出队 { T item=queueL.Front(); queueL.Pop_front(); return item;} void Clear() //置空队 {queueL.Clear();} }; int main() { Queue<int> q; q.Push(18); q.Push(22); q.Push(88); int num=q.Size(); for(int i=0;i<num;i++) cout<<q.Pop()<<endl; }优化此段代码
时间: 2024-03-27 12:35:18 浏览: 54
这段代码可以进行以下优化:
1. 在 Queue 类中加入一个私有成员变量 max,表示队列中元素的最大值。在 Push() 函数中判断加入的元素是否大于 max,如果大于,则更新 max 的值。这样可以避免每次 Pop() 函数都需要遍历整个队列来找出最大值。
2. 在 Pop() 函数中,先判断队列是否为空,如果为空则直接返回,避免在空队列中 Pop() 引发的错误。
3. 在 main() 函数中,可以通过使用 while 循环来遍历并输出队列中的元素,避免使用 for 循环的不必要计数器。
修改后的代码如下所示:
```
template<class T>
class Queue {
List<T> queueL;
T max; // 添加一个私有成员变量 max
public:
Queue() : max(0) {} // 在构造函数中初始化 max
~Queue(){}
int Size() const { return queueL.Size(); }
int Empty() const { return queueL.Empty(); }
const T& Front() const { return queueL.Front(); }
void Push(const T& item) {
queueL.Push_back(item);
if (item > max) max = item; // 更新 max 的值
}
T Pop() {
if (queueL.Empty()) return T(); // 如果队列为空,直接返回
T item = queueL.Front();
queueL.Pop_front();
return item;
}
void Clear() { queueL.Clear(); }
T GetMax() const { return max; } // 添加一个公有成员函数 GetMax(),返回最大值 max
};
int main() {
Queue<int> q;
q.Push(18);
q.Push(22);
q.Push(88);
while (!q.Empty()) cout << q.Pop() << endl; // 使用 while 循环遍历并输出队列中的元素
cout << "max: " << q.GetMax() << endl; // 输出最大值
}
```
阅读全文