Cola: forma lineal que tiene una ciertas limitaciones operativas, solamente un extremo de la inserción, deleción en el otro extremo.
Características: En primer llegado, primer servido, primero en salir tabla
frontal de la cabeza, cola trasera
almacenamiento secuencial
. 1 #define la MaxSize <el número máximo de elementos de datos almacenado> 2 3. Struct QNode { 4. 5. ElementType los datos [el MaxSize]; . 6 . 7 int trasero; // End 8. 9. Int frontal; // cabeza 10 11. }; 12 es 13 es typedef struct * QNode Queue;
14 // parte posterior del frente = = -1;
Circular enfoque de almacenamiento de colas:
(1) el uso de una etiqueta adicional: tamaño o Tag (inserto 1, eliminar 0) dominio
(2) usando solamente matriz espacial de n-1
(1) en la cola (cola circular)
1 void AddQ (Queue PtrQ, artículo ElementType) { 2 3 Si ((PtrQ-> trasera + 1 )% MaxSize == PtrQ-> frontal) { 4 5 printf ( " 队列满" ); 6 7 de retorno ; 8 9 } 10 11 PtrQ-> reat = (PtrQ-> trasera + 1 )% MaxSize; 12 13 PtrQ-> Data [PtrQ-> trasera] = artículo; 14 15 }
(2) la cola
ElementType deleteq (cola PtrQ) { si (PtrQ-> delante == PtrQ-> ran) { printf ( " 队列空" ); volver ERROR; } Más { PtrQ -> frente = (PtrQ-> frontal + 1 )% MaxSize; retorno PtrQ-> Datos [PtrQ-> delante]; } }
tienda de una cadena
struct Nodo {// vinculado estructura lista de nodos de
la ElementType los Datos;
struct Nodo * siguiente;
};
struct {// cadena estructura de cola QNode
struct nodo * trasera; // apunta al nodo cola
struct nodo * frontal; // cabeza punto de unión puntos };
typedef struct QNode * cola; cola PTRQ;
Insertar y operaciones de borrado se realizan en ambos extremos de la lista
Sin cabeza operaciones de la cadena nodo de equipo lista de convocados
El deleteq ElementType (cola PTRQ) {
struct Nodo * FrontCell;
ElementType FrotElem;
SI (PtrQ-> Frente == NULL) {
printf ( "cola vacía" );
el retorno de error;
}
FrontCell = PtrQ-> delantera: si (PtrQ-> == frontal PtrQ-> trasero) // Si el elemento sólo una cola de PtrQ-> delante = PtrQ-> trasera = NULL; // borrar la cola posterior se vacíe la otra {PtrQ-> = frente PtrQ-> frontal> el siguiente; FrontElem = FrontCell -}> los datos; gratis (FrontCell); retorno FrontElem;}