FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
TList, TQueue, TStack
Me podria alguien decir, para que se usan las componentes TQueue, TStack y TList?.
Es que tengo que preparar una clase sobre esos temas y no tengo idea de su uso. |
#2
|
|||
|
|||
Clases TList, TQueue y TStack
Que tal. Te cuento que las clases TList, TQueue y TStack son estructuras de almacenamiento definidas en Delphi para que no tengas que programarlas. Corresponden a la implementación de una lista vinculada, una cola y una pila, respectivamente. Solo he utilizado el TList, pero creo que el estilo es el mismo en las tres clases (deberías verificarlo).
Con respecto al TList puedo decirte que es una lista hecha con punteros genéricos (pointer) por lo que puedes poner cualquier cosa en la lista, es decir, no necesariamente elementos del mismo tipo en cada uno de los nodos. Lo importante es que sepas que hay en el nodo para poder hacer un cast al objeto antes de recuperar la información almacenada en el nodo de la lista. La clase TList provee un función de ordenamiento utilizando quicksort, y solamente debes proveerle una función que retorna -1,0 o 1 segun sea un elemento menor, igual o mayor a otro. Todo esto que te cuento esta disponible en el help del delphi, pero si necesitas mas ayuda, avisa. Saludos, Ulises |
#3
|
||||
|
||||
Yo si he usado TQueue y TStack, verifico que identico a Tlist en cuanto a creación, difiere en que para añadir debes usar el método Push y para extraer un elemento usar Pop, tambien permite consultar el elemento de la cima, es decir, en el caso de Tqueue sería el primero de la cola, y en el caso de Tstack, el elemento que se halla arriba de la pila; en ambos casos sin necesidad de extraerlo, el método en cuestion se llama Peek.
Por supuesto aqui no tiene sentido ordenar estos objetos. Por supuesto no he controlado errores de memoria o de creación... pero basicamente es esto. No te olvides liberar la pila con Libros.Free que automaticamente liberará todos los libros que haya en la pila. Saludos |
#4
|
||||
|
||||
Holas!
Esas clases implementan un parte de lo que se conoce como TAD (Tipo Abstracto de Dato), esto es básicamente estructuras de almacenamiento de datos de la vida cotidiana com las pilas de libros o las colas de los cines o las listas de compras implementadas en computación. Existe muchisimos tipos de TAD, otros ejemplos son las tablas de dispersión o Hash, los arboles binarios, listas doblemente enlazadas, grafos, diccionarios, todo tipo de arboles, etc. Cada tipo se utiliza en funcion de lo que se necesite, por ejemplo para búsquedas rápidas conviene usar tablas hash o arboles binarios. No es dificil implementar estos tads, lo que hay que hacer es pensar las funciones primitivas básicas que deben tener para su utilización, aquellas que mediante su combinación se pueden crear otras funcionalidades. Aca va un tipico ejemplo de como implementar una lista:
|
#5
|
|||
|
|||
Hola a tod@s:
Perdón por mi ignorancia pero estoy intentando crear una cola con Tqueue y encuentro poca información o información errónea. Tengo un par de preguntas:
Saludos. |
#6
|
||||
|
||||
Con respecto a la pregunta original, creo que es algo mas simple, todas son clases que implementan las siguientes estructuras de datos:
TList es una lista simple. TQueue es una pila FIFO (first-in first-out) TStack es una pila LIFO (last-in first-out) Saludos! Cita:
Cita:
Solo liberará el espacio de memoria de la clase, no de sus objetos referenciados, tienes que eliminarlos "manualmente", y puedes usar la misma pila para acceder a ellos. Saludos!
__________________
delphi.com.ar Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla. |
#7
|
|||
|
|||
Muchas gracias delphi.com.ar:
Tus explicaciones han sido claras y concisas . Con la tuya más el resto de aportaciones del hilo voy a meterme en faena con las colas ya que las tengo más claras. Saludos. |
#8
|
|||
|
|||
He estado trabajando con lo explicado y funciona genial.
Otra pregunta. Me gustaría ir más allá y hacer una lista con las colas pero no tengo claro como acceder a las colas. Yo hago lo siguiente
No sé si es la manera estándar o si existiría una forma más directa , sé que lo siguiente no es correcto:
Saludos y gracias por la paciencia. |
#9
|
||||
|
||||
Al ver tu código me surgen varias dudas...
Cita:
Saludos!
__________________
delphi.com.ar Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla. |
#10
|
|||
|
|||
Buenas tardes delphi.com.ar:
Cita:
Cita:
Muchísimas gracias por tu ayuda, como siempre das en el clavo. Saludos |
Herramientas | Buscar en Tema |
Desplegado | |
|
|
|