Si buscas hosting web, dominios web, correos empresariales o crear páginas web gratis, ingresa a PaginaMX
Por otro lado, si buscas crear códigos qr online ingresa al Creador de Códigos QR más potente que existe


Pilas, colas
Una pila (stack en inglés) es una lista ordinal o estructura de datos en la que el modo de acceso a sus elementos es de tipo LIFO (del inglés Last In First Out, último en entrar, primero en salir) que permite almacenar y recuperar datos. Esta estructura se aplica en multitud de ocasiones en el área de informática debido a su simplicidad y ordenación implícita de la propia estructura.
 
Para el manejo de los datos se cuenta con dos operaciones básicas: apilar (push), que coloca un objeto en la pila, y su operación inversa, retirar (o desapilar, pop), que retira el último elemento apilado.
En cada momento sólo se tiene acceso a la parte superior de la pila, es decir, al último objeto apilado (denominado TOS, Top of Stack en inglés). La operación retirar permite la obtención de este elemento, que es retirado de la pila permitiendo el acceso al siguiente (apilado con anterioridad), que pasa a ser el nuevo TOS.
Por analogía con objetos cotidianos, una operación apilar equivaldría a colocar un plato sobre una pila de platos, y una operación retirar a retirarlo.
Las pilas suelen emplearse en los siguientes contextos:
Evaluación de expresiones en notación postfija (notación polaca inversa).
Reconocedores sintácticos de lenguajes independientes del contexto
Implementación de recursividad.
 
El método de pila para la evaluación de expresiones fue propuesto en 1955 y dos años después patentado por Fiedrich L.Bauer, quién recibió en 1988 el premio "IEEE Computer Society Pioneer Award" por su trabajo en el desarrollo de dicha estructura de datos.
[editar]Pila de llamadas
 
La Pila de llamadas es un segmento de memoria que utiliza esta estructura de datos para almacenar información sobre las llamadas a subrutinas actualmente en ejecución en un programa en proceso.
Cada vez que una nueva subrutina es llamada, se apila una nueva entrada con información sobre ésta tal como sus variables locales. En especial, se almacena aquí el punto de retorno al que regresar cuando esta subrutina termine (para volver a la subrutina anterior y continuar su ejecución después de esta llamada)..
[editar]Pila como tipo abstracto de datos
 
A modo de resumen tipo de datos, la pila es un contenedor de nodos y tiene dos operaciones básicas: push (o apilar) y pop (o desapilar). 'Push' añade un nodo a la parte superior de la pila, dejando por debajo el resto de los nodos. 'Pop' elimina y devuelve el actual nodo superior de la pila. Una metáfora que se utiliza con frecuencia es la idea de una pila de platos en una cafetería con muelle de pila. En esa serie, sólo la primera placa es visible y accesible para el usuario, todas las demás placas permanecen ocultas. Como se añaden las nuevas placas, cada nueva placa se convierte en la parte superior de la pila, escondidos debajo de cada plato, empujando a la pila de placas. A medida que la placa superior se elimina de la pila, la segunda placa se convierte en la parte superior de la pila. Dos principios importantes son ilustrados por esta metáfora: En primer lugar la última salida es un principio, la segunda es que el contenido de la pila está oculto. Sólo la placa de la parte superior es visible, por lo que para ver lo que hay en la tercera placa, el primer y segundo platos tendrán que ser retirados.
[editar]Operaciones
Una pila cuenta con 2 operaciones imprescindibles: apilar y desapilar, a las que en las implementaciones modernas de las pilas se suelen añadir más de uso habitual.
Crear: se crea la pila vacía.
Apilar: se añade un elemento a la pila.(push)
Desapilar: se elimina el elemento frontal de la pila.(pop)
Cima: devuelve el elemento que esta en la cima de la pila. (top o peek)
Vacía: devuelve cierto si la pila está vacía o falso en caso contrario.
[editar]Implementación
Un requisito típico de almacenamiento de una pila de n elementos es O(n). El requisito típico de tiempo de O(1) las operaciones también son fáciles de satisfacer con un array o con listas enlazadas simples.
La biblioteca de plantillas de C++ estándar proporciona una "pila" clase templated que se limita a sólo apilar/desapilar operaciones. Java contiene una biblioteca de la clase Pila que es una especialización de Vector. Esto podría ser considerado como un defecto, porque el diseño heredado get () de Vector método LIFO ignora la limitación de la Pila.
Estos son ejemplos sencillos de una pila con las operaciones descritas anteriormente (pero no hay comprobación de errores).
 
Static Memory Allocation, es el proceso de asignar memoria en tiempo de compilación antes de que el 
programa inicie su ejecución. 
Por ejemplo, en programación, las constantes, que son conocidas en tiempo de compilación, tienen 
asignadas las porciones de  memoria de forma estática antes de la ejecución del programa. También 
todas a las variables declaradas estáticamente se les asigna una porción estática de memoria.
Asignación dinámica de memoria
Consiste en reservar memoria para propósitos específicos en  tiempo de ejecución. Los programas de 
aplicaciones usan memoria cuando son puestos en ejecución y pueden asignar más una vez que ya se 
encuentren en ejecución. Si no existe suficiente memoria libre, los programas no podran ejecutarse.
La asignación dinámica de memoria de un objeto existe hasta que es liberada explícitamente por el 
programador, o por la salida de un bloque o por el recolector de basura. En este contexto, se dice que 
ese objeto tiene tiempo de vida dinámico.
Generalmente la memoria es asignada desde una gran pool o memoria sin usar, llamada  heap. La 
ubicación exacta de la memoria asignada no es conocida, por lo tanto esa memoria es accedida 
indirectamente, generalmente vía referencia.



Malloc

 

En informática, malloc es una subrutina para el ejercicio de asignación de memoria dinámica en los lenguajes de programación C y C++. Es una abreviatura del inglés Memory Allocation. Forma parte de la biblioteca estándar stdlib.h para ambos lenguajes. Muchas implementaciones de malloc están disponibles, cada una de las cuales se realiza de manera diferente en función del hardware de computación y de cómo se escribe el programa. El rendimiento varía según el tiempo de ejecución y la memoria requerida. Los programas deben gestionar adecuadamente la memoria dinámica asignada mediante el uso de malloc, y de este modo, evitar pérdida y corrupción de memoria.

 


 

 
Anonymous

@mikeolopolous

23 May 2011 - 01:04 pm

No mames pablo, ni siquiera lees la info cabron. Que tiene que ver TDA en programacion con TDA/H en medicina. Jajajajaja te pasaste de verga we

Agregar un comentario

Tu nombre

Tu dirección de correo (no se mostrará)

¿De qué color es el pasto? (chequeo de seguridad)

Mensaje *

© 2025 tareas

01315