Ordenar la cadena de aplicación de cola / de almacenamiento

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;}

 

Supongo que te gusta

Origin www.cnblogs.com/zhengxin909/p/12571766.html
Recomendado
Clasificación