elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: (TUTORIAL) Aprende a emular Sentinel Dongle By Yapis


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  C - Implementar cola de prioridades
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: C - Implementar cola de prioridades  (Leído 4,613 veces)
ank3r

Desconectado Desconectado

Mensajes: 5


Ver Perfil
C - Implementar cola de prioridades
« en: 13 Mayo 2014, 16:08 pm »

Me gustaría implementar una cola en la que ingreso elementos y los acomodo en la misma aplicando una función que en definitiva devuelve un número para cada elemento, compara y el menor va primero.

Los elementos que ingreso son estructuras, y la función que aplico para saber la prioridad de estos utiliza los distintos valores de la estructura, pero eso es lo de menos. Me gustaría saber cómo implementar esta cola: ir ingresando elementos (que son estructuras) de forma ordenada según la prioridad.

No busco que codifiquen todo, puede ser un pseudo-código para entender el mecanismo, porque yo sé crear una cola, hacer push, pop, eliminar etc.. sólo quiero saber como ingresar ordenado por prioridad


En línea

eferion


Desconectado Desconectado

Mensajes: 1.248


Ver Perfil
Re: C - Implementar cola de prioridades
« Respuesta #1 en: 13 Mayo 2014, 16:20 pm »

Podrías tener una lista enlazada o un árbol.

En el caso de la lista, las estructuras van todas en orden, una detrás de otra... luego para añadir un elemento en su posición concreta es tan sencillo como recorrer la lista hasta encontrar su posición e insertar ahí el elemento.

Código
  1. // Ejemplo de una estructura preparada para gestionar listas enlazadas
  2. struct nodo
  3. {
  4.  int valor;
  5.  struct nodo* siguiente; // puntero al siguiente elemento de la lista, null si es el ultimo.
  6. };

En el caso de los árboles, la estructura lógica se complica ligeramente. Cada nodo tiene dos punteros, uno en el que se encuentran los nodos más pequeños y otro para los nodos más grandes.

Si no hace falta balancear el árbol, el proceso para rellenar el árbol es bastante sencillo.

Código
  1. // Ejemplo de una estructura preparada para ser utilizada en arboles
  2. struct nodo
  3. {
  4.  int valor;
  5.  struct nodo* izquierdo; // puntero a nodos de menor valor
  6.  struct nodo* derecho; // puntero a nodos de mayor valor
  7. };

Cada una de estas dos opciones tiene su teoría y sus trucos por detrás, echa un vistazo por internet y verás que información no te va a faltar. Si te escribiese aquí todo lo relacionado sobre el tema más de uno acababa dormido :)

Un saludo.



En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
PHP implementar
PHP
Ari Slash 8 3,865 Último mensaje 11 Agosto 2009, 11:18 am
por #!drvy
Implementar una pila con una cola en c++
Programación C/C++
alvareteb 9 6,125 Último mensaje 25 Enero 2012, 19:36 pm
por Xandrete
Cola con prioridades
Programación C/C++
sprblk 0 1,857 Último mensaje 25 Mayo 2012, 03:53 am
por sprblk
pasar datos de una cola dinámica a otra cola...
Programación C/C++
include (); 4 6,525 Último mensaje 10 Agosto 2012, 10:01 am
por BlackZeroX
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines