#include <iostream> #include <cstring> usando o namespace std; template < class Type> class Queue { private : int front; int rear; Digite * item; int length; // 有效长度 int maxsize; // 最大长度 público : Queue ( int i) { frente = traseira = 0 ; se (i> 10 ) tamanho máximo= i; else maxsize = 10 ; length = 0 ; item = new Tipo [maxsize]; if (item == 0 ) { cout << " Falha na alocação de espaço " << endl; } } ~ Queue () { delete [ ] item; } void Anexar (Tipo x); // Anexar elemento void GetHead (Tipo & x); // Buscar elemento boolAllocation_mem (); // Se não houver espaço suficiente, aloque o espaço bool IsFull () // Julga que a equipe está cheia { if ((rear + 1 )% maxsize == front) retorna true ; caso contrário, retorne false ; } bool IsEmputy () // Julga a equipe Vazio { if (rear == front) retorna true ; caso contrário, retorna false ; } int Q_maxsize () // Retorna o número máximo de elementos que podem ser armazenados na fila { return maxsize; } int Q_length () // Retorna o número de elementos válidos na fila atual { return length; } }; template < class Type> void Queue <Type> :: Append (Type x) { if (IsFull ()) { Allocation_mem (); } traseiro = (traseiro + 1 )% maxsize; item [traseiro] = x; comprimento ++ ; } modelo < classe Tipo> voidFila <Tipo> :: GetHead (Tipo & x) { if (IsEmputy ()) { cout << " 队列 为 空" << endl; } frente = (frente + 1 )% maxsize; x = item [frente]; comprimento - ; } modelo < tipo de classe > bool Queue <Type> :: Allocation_mem () { Type * p, * temp; p = novo tipo [tamanho máximo + 10 ]; if (!p) { cout << " Falha no espaço estendido " << endl; return false ; } memmove (p, item, sizeof (Type) * tamanho máximo); temp = item; item = p; delete [] temp; maxsize = maxsize + 10 ; return true ; } // O procedimento de teste é: int main () { cout << " Fila de número inteiro 1: " << endl; Fila <int > fila1 ( 8 ); int input [ 10 ], i, output; for (i = 0 ; i < 10 ; i ++ ) { input [i] = i + 1 ; fila1.Append (input [i]); } cout << "O número máximo de elementos que podem ser armazenados na fila é: " << fila1.Q_maxsize () << endl; cout << "O número de elementos válidos na fila é: " << fila1.Q_length () << endl ; cout << " Os elementos na fila são: " ; para (i = 0; i < 10 ; i ++ ) { fila1.GetHead (saída); cout << saída << " " ; } Cout << endl; cout << " 队列 队列 2: " << endl; Fila < char > queue2 ( 26 ); char em [ 27 ] = " abcdefghijklmnopqrstuvwxyz " , a; int j, k; para (j = 0 ; j < 26 ; j ++ ) { queue2.Append ( in [j]); } cout << "O número máximo de elementos que podem ser armazenados na fila é: " << fila2.Q_maxsize () << endl; cout << "O número de elementos válidos na fila é : " << fila2.Q_length () << endl; cout << " Os elementos na fila são: " ; para (k = 0 ; k < 26 ; k ++ ) { fila2.GetHead (a); cout << a < < " " ; } cout << endl; retornar 0; }