Bienvenidos a un nuevo curso. Ahora estoy en el ciclo de grado superior: Desarrollo de aplicaciones multiplataforma. Y voy a ser parte del experimento de la formación dual. Estaré haciendo practicas durante un año, y a la vez finalizando la formación.

Deseadme suerte.

miércoles, 21 de enero de 2015

Colas

0

Colas
Tipo especial de lista en la que las eliminaciones se realizan al principio y las insercciones al final.
El concepto es muy similiar al de una cola delante de una ventanilla: quien llega se pone el último y el siguiente a ser atendido es el primero. Cada uno es atendido cuando le llega su turno.
La cola es una estructura FIFO (First In, First Out): el primero en llegar es el primero en salir.

Funcionamiento de una cola (dibujo)

Operaciones sobre una cola
Cuatro operaciones posibles:
- Inicializar
- Comprobar si está vacía
- Meter
- Sacar
- implementación: Como una lista pero restringiendo las operaciones posibles. No obstante, es mejor emplear dos punteros (uno al primcipio y otro al final):

struct cola{
     struct nodo *principio;
     struct nodo *final;
}

Aplicaciones de las colas
Simulaciones: Modelar un sistema real mediante un prograna de ordenador, simplificando las cosas, con el fin de obtener datos acererca de su comportamiento. Por ejemplo, simular una oficina con dos ventanillas para obtener el tiempo de espera en cada ventanilla.
Servicio de impresión: Cuando tenemos una impresora y varios usuarios, lo mejor es poner una cola de impresión para que se vayan recibiendo los trabajos que cada usuario quiere imprimir. Se servirán en orden de llegada.
Procesis en espera para ser ejecutados: Los sistemas operativos también hacen uso de colas para colocar en ellas a los procesos que esperan algo, por ejemplo, su turno para ser ejecutados.
Clientes a los que servir un trozo de fichero de servicios P2P: El emule (y similares) también encola a cada cliente que quiere un fichero de cada una de las máquinas en las que se sirve. Tanto en este caso como en el anterior, en ocasiones se usan prioridades en las colas, que permiten que ciertos elementos avancen más rápido que otros.

Copiar listas (en general)
Está claro que no podemos hacer esto:
     struct nodo *lista;
     struct nodo *otra;
     ...
     otra=lista;
Ya que cualquier cambio que hiciésemos en lista se haría en otra y viceversa.

Si hacemos esto estaríamos sin más copiando un puntero en otro.

Copiar listas: forma correcta
void copiatLista (struct nodo **dst, struct nodo *fnt){
     struct nodo *e, *tmp, *anterior;
     tmp=fnt;
     *dst=(struct nodo *) malloc (sizeof(struct nodo));
     e=*dst;
     anterior=NULL;
     while (tmp!=NULL){
          e->elemento=tmp->elemento;
          e->siguiente=(struct nodo *) malloc (sizeof(struct nodo));
          anterior=e;
          e=e->siguiente;
          tmp=tmp->siguiente;
     }
      free(e);
      if (anterior!=NULL){
          anterior->siguiente=NULL;
      }
       else{
          *dst=NULL;
       }
}

0 comentarios:

Publicar un comentario

Etiquetas actuales

BD (67) DEF (64) PROG (64) SQL (44) Java (29) PRACTICAS (20) php (18) DI (16) PRESTASHOP (16) PROGRAMACIÓN WEB (16) HTML (13) SGE (12) ERP (9) CONSULTAS (8) css (8) Linux (5) XML (5) Android (4) PDM (4) C (3) NetBeans (3) PSP (3) SMARTY (3) comandos (3) HOOK (2) POST (2) XSD (2) cURL (2) JS (1) MEDIA-QUERYS (1) PDO (1) RESPONSIVE (1) TPL (1) TRADUCCIÓN (1) app_inventor (1)

Todas las etiquetas

EJER (78) BD (67) DEF (64) PROG (64) SQL (44) c# (40) Programación (39) Ficheros (36) Java (29) bases de datos (21) PRACTICAS (20) lenguajes de marcas (19) AD (18) Entorno de desarrollo (18) php (18) PROCEDIMIENTOS (17) DI (16) FORM (16) PRESTASHOP (16) PROGRAMACIÓN WEB (16) lenguaje C (16) E/R (14) HTML (13) SGE (12) Sistemas informáticos (10) ERP (9) CONSULTAS (8) TRANSACCIONES (8) TRIGGER (8) VISUAL BASIC (8) css (8) FUNCIONES (7) html5 (6) Ada (5) EXAMEN (5) Linux (5) XML (5) estructuras (5) Android (4) DISEÑO (4) INTERFAZ (4) LOG (4) OpenBravo (4) PDM (4) ACTUALIZAR (3) C (3) DIAGRAMA (3) Directorios (3) NEW (3) NOR (3) NetBeans (3) OLD (3) PSP (3) SMARTY (3) comandos (3) css3 (3) AISLAMIENTOS (2) C++ (2) CONTROLERRORES (2) ELIMINAR (2) HOOK (2) INSERTAR (2) INST (2) MULTITABLA (2) POST (2) RECURSIVIDAD (2) SUBCONSULTAS (2) VISTAS (2) XSD (2) cURL (2) punteros (2) AJENA (1) BLOQUEOS (1) Byte (1) CREACION (1) CRM (1) Configuración (1) Controles (1) Datos (1) GOTFOCUS (1) IMAGENES (1) INDICES (1) JS (1) Lenght (1) MEDIA-QUERYS (1) Mingw (1) MonoDeveloped (1) OPTIMISTA (1) PDO (1) PESIMISTA (1) RESPONSIVE (1) SPEAK (1) Scanner (1) Serializacion (1) Streams (1) System (1) TPL (1) TRADUCCIÓN (1) USUARIOS (1) UseSystemPasswordChar (1) app_inventor (1) char (1) examenes (1) libreoffice (1) make (1) redes (1)