• Viernes 8 de Noviembre de 2024, 16:37

Autor Tema:  recorrer monticulos (heaps)  (Leído 2584 veces)

sparkling_wine

  • Nuevo Miembro
  • *
  • Mensajes: 6
    • Ver Perfil
recorrer monticulos (heaps)
« en: Miércoles 27 de Agosto de 2008, 12:31 »
0
Saludos!
¿Sabéis si es posible hacer un recorrido por un heap mostrando todos sus elementos (del mismo modo que los TAD lista enlazada)?

m0skit0

  • Miembro de PLATA
  • *****
  • Mensajes: 2337
  • Nacionalidad: ma
    • Ver Perfil
    • http://fr33kk0mpu73r.blogspot.com/
Re: recorrer monticulos (heaps)
« Respuesta #1 en: Miércoles 27 de Agosto de 2008, 13:02 »
0
¿Te refieres a un heap reservado con malloc()?

sparkling_wine

  • Nuevo Miembro
  • *
  • Mensajes: 6
    • Ver Perfil
Re: recorrer monticulos (heaps)
« Respuesta #2 en: Miércoles 27 de Agosto de 2008, 13:32 »
0
hola, gracias por responder.
no, me refiero a un heap estatico de unos 10 elementos implementado a partir de un array.
porque.... las listas estaticas digamos que muy eficientes no son, ¿no?
El problema que tengo es: tengo X elementos con una determinada prioridad, los tengo que tener ordenados segun su prioridad y de todos esos X elementos solo debo poder guardar 10. Me temo que eso correspondira a un heap si no fuera porque un heap no se puede recorrer como una lista (o al menos eso tenia entendido yo...). ¿que opinas?

Saludos

m0skit0

  • Miembro de PLATA
  • *****
  • Mensajes: 2337
  • Nacionalidad: ma
    • Ver Perfil
    • http://fr33kk0mpu73r.blogspot.com/
Re: recorrer monticulos (heaps)
« Respuesta #3 en: Miércoles 27 de Agosto de 2008, 14:56 »
0
El heap es la memoria que se reserva dinámicamente, es decir, un array no forma parte del heap puesto que su asignación es estática (se reserva la TODA la memoria siempre que se ejecuta el programa). Pero la memoria reservada con malloc() sí está en el heap porque es dinámica, depende del código y de las condiciones que se den en él.

Las listas estáticas no tienen que ser menos eficientes. Si sabemos de antemano el número de elementos que va a tener una lista, es mejor evitar las listas dinámicas puesto que la reserva de memoria dinámica tiene un coste de velocidad (llamada a funciones, al sistema, etc...).

Cualquier estructura de datos bien construida se puede recorrer perfectamente. Lo que sí impiden la mayoría de los sistemas operativos actuales (o deberían :)) es la ejecución de código desde el heap.

sparkling_wine

  • Nuevo Miembro
  • *
  • Mensajes: 6
    • Ver Perfil
Re: recorrer monticulos (heaps)
« Respuesta #4 en: Miércoles 27 de Agosto de 2008, 15:21 »
0
ok. te debo las gracias. solo una última cosa:  :P
¿las operaciones de la lista estática, son también todas las que lleva la lista dinámica?

saludos!

m0skit0

  • Miembro de PLATA
  • *****
  • Mensajes: 2337
  • Nacionalidad: ma
    • Ver Perfil
    • http://fr33kk0mpu73r.blogspot.com/
Re: recorrer monticulos (heaps)
« Respuesta #5 en: Miércoles 27 de Agosto de 2008, 15:36 »
0
Perdona, pero no he entendido tu pregunta  :huh:

sparkling_wine

  • Nuevo Miembro
  • *
  • Mensajes: 6
    • Ver Perfil
Re: recorrer monticulos (heaps)
« Respuesta #6 en: Miércoles 27 de Agosto de 2008, 16:30 »
0
Hey
Si, a ver. Mi pregunta es: en listas estaticas, cuales son las operaciones que debería implementar (inserción, borrado, crear lista, avance, a primero.....). es decir, supongo que es obvio que debo meter todas las que tambien se implementan con las listas dinamicas...
Pregunto eso, pk las listas estaticas veo que son un tanto diferentes que las dinamicas, solo era para asegurarme. de todos modos creo que haré uso de un heap.

Gracias por adelanto!

ProfesorX

  • Moderador
  • ******
  • Mensajes: 796
  • Nacionalidad: mx
    • Ver Perfil
Re: recorrer monticulos (heaps)
« Respuesta #7 en: Miércoles 27 de Agosto de 2008, 21:05 »
0
Cita de: "m0skit0"
El heap es la memoria que se reserva dinámicamente...

Aqui el compañero Mosquito esta equivocado. Es cierto que heap en algunos casos se refiere al espacio de memoria dinamica, pero en esta caso, se refiere a una estructura de datos.

http://en.wikipedia.org/wiki/Heap_(data_structure)

En realidad, tal como lo menciona la wikipedia, es una especie de arbol binario.

Y respondiendo a lo que preguntabas en tu mensaje original, si, es posible hacer un recorrido mostrando sus elementos.

En la pagina que te deje, ahi te dice cuales son las operaciones mas comunes con heaps

Saludos :)

NOTA:
==================================================================
Este foro es para ayudar, aprender, compartir... usenlo para eso,
NO SE RESUELVEN DUDAS POR MENSAJE PRIVADO Y MENOS POR CORREO
==================================================================

m0skit0

  • Miembro de PLATA
  • *****
  • Mensajes: 2337
  • Nacionalidad: ma
    • Ver Perfil
    • http://fr33kk0mpu73r.blogspot.com/
Re: recorrer monticulos (heaps)
« Respuesta #8 en: Miércoles 27 de Agosto de 2008, 22:53 »
0
Por eso me estaba haciendo yo tanto lío, jejeje  :brickwall: Mis disculpas.