#include<iostream>
using namespace std;
template<class T>
class Queue {
public:Queue(int size=0);
Queue(const Queue<T>& q);
virtual~Queue();
void In(T n);
const T Out();
bool Empty()const;
bool Full()const;
private:int max; T* Front, * Tail;
};
template<class T>
Queue<T>::Queue(int size)
{
Front=Tail = new T[(max = size)+1];
}
template<class T>
Queue<T>::Queue(const Queue<T>& q)
{
Front = new T[(max = q.max)+1];
Tail = Front + (int(q.Tail - q.Front));
for (int i = 0; i < int(Tail - Front); i++)
{
Front[i] = q.Front[i];
}
}
template<class T>
Queue<T>::~Queue()
{
delete[]Front;
}
template<class T>
const T Queue<T>::Out()
{
if (Tail == Front)
{
cout << "overflow" << endl;
return -1;
}
else
{
return *(Front++); //回傳出隊的該元素
}
}
template<class T>
void Queue<T>::In(T n)
{
if (int(Tail - Front) >= max)
cout << "overflow" << endl;
else *(Tail++) = n;
}
template<class T>
bool Queue<T>::Empty()const
{
return Front == Tail;
}
template<class T>
bool Queue<T>::Full()const
{
return int(Tail - Front) == max;
}
int main()
{
Queue<int>Queue1(10); Queue<double>Queue2(10);
for (int i = 2; i < 5; i++)
Queue1.In(i);
for (double i = 0; i < 8; i++)
Queue2.In(i);
cout << Queue1.Out(); //這里運行有問題
}
最后輸出入隊函式Out的時候好像對Front指標的操作debug無法正常運行,請大佬幫忙看一下
uj5u.com熱心網友回復:
說錯了 是出隊函式轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/78838.html
標籤:C++ 語言
上一篇:集合求交集并集
