Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- using namespace std;
- const int SIZE = 5;
- template < class T > class queue {
- T qu[SIZE]; //содержит очередь
- int top; //индекс вершины очереди
- public:
- void init() //инициализация очереди
- {
- top = 0;
- }
- void push(T item); //помещает объект в очередь
- T pop(); //выталкивает объект из очереди
- };
- // функция помещения элементов в очередь
- template < class T > void queue < T > ::push(T item) //к имени класса
- {
- if (top >= SIZE) {
- throw "Overload of queue \n"; //генерирование искл ситуации
- cout << endl;
- }
- qu[top] = item;
- top++;
- }
- //функция извлечения объектов из очереди
- template < class T > T queue < T > ::pop() {
- if (top <= 0) {
- throw "queue not full! "; //генерирование искл ситуации
- }
- T tmp = qu[0];
- for(int i = 0; i < top-1; i++){
- qu[i] = qu[i+1];
- }
- top--;
- return tmp;
- }
- int main() {
- int i;
- queue < char > qu1; //создание символьной очереди
- queue < int > dqu1; //созданиие очереди со значениями типа инт
- queue < double > dqu2; //созданиие очереди со значениями типа дабл
- //инициализация очередей
- qu1.init();
- dqu1.init();
- dqu2.init();
- //помещение объектов в очереди
- try {
- for (i = 0; i < 5; i++) {
- qu1.push('a' + i);
- dqu1.push((i + 1) / 2);
- dqu2.push((i + 100.0) / 2.0);
- }
- for (i = 0; i < 5; i++)
- cout << "Queue qu1 " << qu1.pop() << "\n";
- cout << endl;
- for (i = 0; i < 5; i++)
- cout << "Queue dqu1 " << dqu1.pop() << "\n";
- cout << endl;
- //прога выдает ошибку-искл ситуация
- for (i = 0; i < 999; i++)
- cout << "Queue dqu2 " << dqu2.pop() << "\n";
- } catch (const char * S) {
- cout << "Error " << S << endl << endl;
- return 0; //возврат при не полной очереди
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement