#include <iostream> #include <cstring> usando el espacio de nombres std; template < class Type> class Queue { private : int front; int trasero; Tipo * artículo; int longitud; // 有效 长度 int maxsize; // 最大 长度 public : Queue ( int i) { front = rear = 0 ; if (i> 10 ) maxsize= i; else maxsize = 10 ; length = 0 ; item = new Type [maxsize]; if (item == 0 ) { cout << " Error de asignación de espacio " << endl; } } ~ Queue () { delete [ ] item; } void Append (Tipo x); // Agregar elemento void GetHead (Type & x); // Obtener elemento boolAllocation_mem (); // Si no hay suficiente espacio, asigne espacio bool IsFull () // Juzgue que el equipo está lleno { if ((rear + 1 )% maxsize == front) return true ; else return false ; } bool IsEmputy () // Juzgue el equipo Empty { if (rear == front) return true ; else return false ; } int Q_maxsize () // Devuelve el número máximo de elementos que se pueden almacenar en la cola { return maxsize; } int Q_length () // Devuelve el número de elementos válidos en la cola actual { return length; } }; template < class Type> void Queue <Type> :: Append (Type x) { if (IsFull ()) { Allocation_mem (); } rear = (rear + 1 )% maxsize; item [rear] = x; length ++ ; } template < class Type> voidQueue <Type> :: GetHead (Type & x) { if (IsEmputy ()) { cout << " 队列 为 空" << endl; } front = (front + 1 )% maxsize; x = elemento [frente]; longitud - ; } template < class Type> bool Queue <Type> :: Allocation_mem () { Type * p, * temp; p = nuevo tipo [maxsize + 10 ]; si (!p) { cout << " Error al extender el espacio " << endl; return false ; } memmove (p, item, sizeof (Type) * maxsize); temp = item; item = p; delete [] temp; maxsize = maxsize + 10 ; return true ; } // El procedimiento de prueba es: int main () { cout << " Integer Queue 1: " << endl; Queue <int > queue1 ( 8 ); int input [ 10 ], i, output; for (i = 0 ; i < 10 ; i ++ ) { input [i] = i + 1 ; queue1.Append (input [i]); } cout << "El número máximo de elementos que se permite almacenar en la cola es: " << queue1.Q_maxsize () << endl; cout << "El número de elementos válidos en la cola es: " << queue1.Q_length () << endl ; cout << " Los elementos en la cola son: " ; para (i = 0; i < 10 ; i ++ ) { queue1.GetHead (salida); cout << salida << " " ; } cout << endl; cout << " 字符型 队列 2 :" << endl; Queue < char > queue2 ( 26 ); char en [ 27 ] = " abcdefghijklmnopqrstuvwxyz " , a; int j, k; para (j = 0 ; j < 26 ; j ++ ) { queue2.Append ( en [j]); } cout << "El número máximo de elementos que se permite almacenar en la cola es: " << queue2.Q_maxsize () << endl; cout << "El número de elementos válidos en la cola es : " << queue2.Q_length () << endl; cout << " Los elementos en la cola son: " ; for (k = 0 ; k < 26 ; k ++ ) { queue2.GetHead (a); cout << a < < " " ; } cout << endl; volver 0; }