Está en la página 1de 13

UNIVERSIDAD TECNOLÓGICA DE PANAMÁ

FACULTAD DE INGENIERÍA EN SISTEMAS COMPUTACIONALES

ESTRUCTURAS DE DATOS 1

INTEGRANTES:

JONATHAN RUÍZ, 8-965-423

ALEXANDER GONZÁLEZ, 8-949-2213

MARCOS MORENO, 8-938-1067

JULIO TRELLES, 8-931-2154

PROFESORA:

MIRLA DEOBALDIA

TEMA:

ESTRUCTURA DE DATOS LINEALES

FECHA DE ENTREGA:

JUEVES 29 DE ABRIL DE 2021

I SEMESTRE AÑO 2021


INTRODUCCIÓN
DEFINICIÓN

Una estructura lineal de datos está conformada por ninguno, uno o varios elementos que

tienen una relación de adyacencia ordenada donde existe un primer elemento, seguido de un

segundo elemento y así sucesivamente hasta llegar al último. El tipo de dato de los elementos

puede ser cualquiera, pero debe ser el mismo tipo para todos. El valor contenido en los elementos

puede ser el mismo o diferente. En estas estructuras se realizan operaciones de agregar y eliminar

elementos a la lista según un criterio particular.

Pila: Es un subtipo de las listas donde el acceso está restringido a un solo extremos de la lista,

en este caso al tope de esta. Un ejemplo de esta estructura es una pila de bandejas de un

restaurante de comida rápida o una pila de platos, etc. Si se analiza el ejemplo en detalle, se tiene

que cualquier cliente del restaurante, al llegar toma la primera bandeja que encuentra en la pila

de bandejas, es decir la que está encima de todas las demás. Asimismo, cuando el empleado del

restaurante coloca bandejas limpias en la pila, lo hace colocándolas encima de la que está arriba,

puesto que es más trabajo, alzar algunas y colocar las limpias entre las que quedan y las que alzó.

Las operaciones básicas sobre una pila son: crearla, destruirla, agregar un nuevo elemento,

suprimir un elemento, consultar el elemento del tope y verificar si está vacía. Esta especificación

incluye operaciones que pueden ser extendidas en la implementación para soportar otras

operaciones útiles de acuerdo con las aplicaciones que la puedan utilizar. En particular, toda

implementación debe contener las operaciones básicas definidas para el tipo y puede ser

ampliada con otras adicionales.


Especificación Pila[TipoEle]

Figura 1. ejemplo de especificaciones de pila (lado derecho de la imagen), ejemplo de operaciones sobre pila.

Operaciones

Según la página web EcuRed, 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 está en la cima de la pila. (top o peek)

• Vacía: devuelve cierto si la pila está vacía o falso en caso contrario.


Implementación de pilas

Por mientras que julio manda algo…

Una pila puede implementarse fácilmente ya sea mediante una matriz o una lista enlazada. Lo

que identifica a una estructura de datos como una pila en cualquier caso no es su estructura sino

su interfaz: al usuario solamente se le permite colocar y extraer datos en el modo que se espera

de una pila y algunas otras operaciones auxiliares. (EcuRed, n.d)

Ejemplos de pilas en distintos lenguajes de programación

 EN PYTHON

class Stack(object):

def __init__(self):

self.stack_pointer = None

def push(self, element):

self.stack_pointer = Node(element, self.stack_pointer)

def pop(self):

e = self.stack_pointer.element

self.stack_pointer = self.stack_pointer.next

return e

def peek(self):
return self.stack_pointer.element

def __len__(self):

i=0

sp = self.stack_pointer

while sp:

i += 1

sp = sp.next

return i

class Node(object):

def __init__(self, element=None, next=None):

self.element = element

self.next = next

if __name__ == '__main__':

# small use example

s = Stack()

[s.push(i) for i in xrange(10)]


print [s.pop() for i in xrange(len(s))]

 EN MAUDE

La PilaNV es la pila no vacía, que diferenciamos de la pila normal a la hora de tomar en

cuenta errores. El elemento X representa el tipo de valor que puede contener la pila: entero,

carácter, registro.

fmod PILA–GENERICA {X :: TRIV} is

sorts Pila{X} PilaNV{X}.

subsorts PilaNV{X} < Pila{X}.

***generadores:

op crear: –> Pila {X} [ctor].

op apilar : X$Elt Pila{X} –> PilaNV{X} [ctor].

***constructores

op desapilar : Pila{X} –> Pila{X}.

***selectores

op cima : PilaNV{X} –> X$Elt.


***variables

var P : Pila{X}.

var E : X$Elt.

***ecuaciones

eq desapilar (crear) = crear.

eq desapilar(apilar(E, P)) = P.

eq cima(apilar(E, P)) = E.

endfm

 EN C++

ifndef PILA

#define PILA // define la pila

template <class T>

class Pila {

private:

struct Nodo {
T elemento;

Nodo* siguiente; // coloca el nodo en la segunda posicion

}* ultimo;

unsigned int elementos;

public:

Pila() {

elementos = 0;

~Pila() {

while (elementos != 0) pop();

void push(const T& elem) {

Nodo* aux = new Nodo;

aux–>elemento = elem;

aux–>siguiente = ultimo;
ultimo = aux;

++elementos;

void pop() {

Nodo* aux = ultimo;

ultimo = ultimo–>siguiente;

delete aux;

––elementos;

T cima() const {

return ultimo–>elemento;

bool vacia() const {

return elementos == 0;

}
unsigned int altura() const {

return elementos;

};

#endif
CONCLUSIÓN
INFOGRAFÍA

 EcuRed. n.d. Pila (Estructura de datos). Fecha de consulta: 26-04-2021.

https://www.ecured.cu/Pila_(Estructura_de_datos).

También podría gustarte