Está en la página 1de 16

Emmanuel López Guerrero

Jazmin Perez Mendez


Actividad 2 Aplicación de las estructuras de datos: pilas, colas y lista
Unidad 1 Estructura de datos
Fecha 23/Febrero/2020
UNIVERSIDAD ABIERTA Y A DISTANCIA DE MEXICO

INDICE

ACTIVIDAD...................................................................................................................................... 3

1. UTILIZACIÓN DE ESTRUCTURA TIPO PILA..................................................................... 4

2. UTILIZACIÓN DE ESTRUCTURA TIPO LISTA................................................................... 5

3. UTILIZACIÓN DE ESTRUCTURA TIPO COLA................................................................... 6

4. IDENTIFICACIÓN DE LA FUNCIONALIDAD DE CADA MÉTODO Y ENTREGA DE


LA DOCUMENTACIÓN................................................................................................................ 7

1.0 PILA..............................................................................................................................................8
1.1 LISTAS........................................................................................................................................10
1.2 COLAS........................................................................................................................................13

BIBLIOGRAFIA............................................................................................................................ 16

2
UNIVERSIDAD ABIERTA Y A DISTANCIA DE MEXICO

ACTIVIDAD

Actividad 2.

1. Utilización de estructura tipo pila


Describe el pseudocódigo del TAD-Pila y codifica (realiza) la estructura
de tipo pila.
2. Utilización de estructura tipo lista
Describe el pseudocódigo del TAD-Lista y codifica una lista con enlace
simple (y gestión dinámica de memoria).
3. Utilización de estructura tipo cola
Describe el pseudocódigo del TAD-Cola y codifica una estructura de tipo
cola.
4. Identificación de la funcionalidad de cada método y entrega de la
documentación
a) Desarrolla y entrega el proyecto elaborado en un lenguaje de
programación
b) La actividad es entregada en tiempo, conforme al calendario de
actividades establecido.
c) El código se encuentra documentado, contiene una estructura
adecuada y explica la funcionalidad de cada método.
d) El código es funcional

3
UNIVERSIDAD ABIERTA Y A DISTANCIA DE MEXICO

1. UTILIZACIÓN DE ESTRUCTURA TIPO PILA

A continuación, se detallará el pseudocódigo del TAD-Pila y la estructura de este tipo.


Tal como lo menciona el material de apoyo de la Unidad 1 de UNAMD el diseño de una
pila es del tipo estructura LIFO (last input, first output), esto quiere decir que el último
elemento en llegar es el primero en salir.

Ejemplo de una estructura de una pila:

Las operaciones usadas en las Pilas son listadas según el sitio web [ CITATION Mon17 \l
3082 ]:

Operaciones Especificacion Especificacion


semántica sintactica
Apiliar Método que entrega un Void apilar (int x)
elemento (x) para que
quede incorporado en la
cima de la pila.
Desapilar Método que elimina el Int desapilar () throws
elemento que ocupa la PilaVacia
cima de la pila y
devuelve como resultado
dicho elemento.
pilaVacia Método que al Boolean pilaVacia()
ejecutarse devuelve true

4
UNIVERSIDAD ABIERTA Y A DISTANCIA DE MEXICO

si la pila está vacía (no


tiene elementos), y false
en caso contrario.
cima Método que devuelve la Int cima () throws
cima de la pila (sin PilaVacia
alterarla).
decapitar Método que elimina el Void dacpitar() throws
elemento de la cima de PilaVacia
la pila.

2. UTILIZACIÓN DE ESTRUCTURA TIPO LISTA

El siguiente tipo son las Listas para las cuales se detallará el pseudocódigo del TAD-Lista y
la estructura de este tipo.

Tal como lo describen el sitio [ CITATION Ecu19 \l 3082 ] las listas no son arreglos
(arrays), aunque representan secuencias de elementos de un tipo, los arreglos tienen
longitud fija; las listas, no; es decir, las listas son flexibles y permiten cambio de
implementación.
En una lista enlazada, cada elemento apunta al siguiente excepto el último que no tiene
sucesor y el valor del enlace es null. Por ello los elementos son registros que contienen el
dato a almacenar y un enlace al siguiente elemento.

Ejemplo de una estructura de una lista simple:

Ejemplo de una estructura de una lista doblemente enlazada:

5
UNIVERSIDAD ABIERTA Y A DISTANCIA DE MEXICO

Las operaciones usadas en las Pilas son listadas según el sitio web [ CITATION Mon17 \l
3082 ]:

Operaciones Especificacion Especificacion


semántica sintactica
Insertar al principio. Método que inserta un list_prepend()
elemento (x) al inicio de
la lista para que quede
incorporado en el primer
lugar de la lista.
Insertar al final. Método que inserta un list_append()
elemento (x) al final de
la lista para que quede
incorporado en el último
lugar de la lista.
insertar en la posición indicada Método que inserta un list_insert()
elemento (x) en un lugar
en especifico de la lista.
Eliminar un nodo Método que elimina el list_remove()
elemento de la lista.
Eliminar nodos según un patrón Método que elimina el list_remove_all()
elemento de la lista
según un patrón por
ejemplo, elimina todos
los nodos pares o nones.
Buscar un nodo según un valor Este método tiene list_find()
programada la búsqueda
según un valor en
especifico, por ejemplo
por índice.

3. UTILIZACIÓN DE ESTRUCTURA TIPO COLA

En el caso de las Colas la estructura a la que pertenece es a la del tipo FIFO (Primero en
entrar primero en salir), espero quiere decir que a diferencia de las Pilas, el elemento que
llegue al final será el último en salir y el primer elemento que llegué será el primero en
salir.

Ejemplo de una estructura de una Cola:

6
UNIVERSIDAD ABIERTA Y A DISTANCIA DE MEXICO

Las operaciones usadas en las Colas son listadas según el sitio [ CITATION Ecu191 \l 3082
]:

Operaciones Especificacion Especificacion sintactica


semántica
Iniciar cola. Método que inicializa queue_new()
un elemento (x).
Método que revisa si la queue_is_empty()
Cola vacía. cola tiene algún valor o
si esta vacía.
Consultar frente cola. Método que consulta el queue_peek_head()
frente del elemento de
la cola.
Consultar final cola. Método que consulta el queue_peek_tail()
final del elemento de la
cola.
Meter Método que agrega un queue_push_tail()
elemento en la cola.
Sacar Este método tiene queue_pop_head()
programado sacar un
campo de la cola.
Vaciar cola. Método que vacía la queue_free()
cola

4. IDENTIFICACIÓN DE LA FUNCIONALIDAD DE CADA MÉTODO Y


ENTREGA DE LA DOCUMENTACIÓN

A continuación, se enlista un ejemplo de pilas, listas y colas en lenguaje Java.

7
UNIVERSIDAD ABIERTA Y A DISTANCIA DE MEXICO

1.0 PILA

Ejemplo de una Pila de tamaño máximo de 10 en lenguaje Java según el portal


[ CITATION pro12 \l 3082 ].

import java.io.*;

public class Pilas {


public static class ClasePila { // Declaracion de la clase de la Pila
private int max=10; // Tamano maximo de la pila
private int pila[] = new int [max]; // Arreglo para almacenar la pila
private int top; // Indica la cantidad de datos en la pila

public ClasePila() { // es el constructor de la clase


top=0;
System.out.println("pila lista");
}

public void Push(int dato) {


if(top==max) // revisa si la pila esta llena
{
System.out.println("pila llena");
return;
}
for(int i=0; i<top; i++) {
if(pila[i]==dato) { // revisa si el dato ya existía previamente
System.out.println("dato duplicado");
return;
}
if(dato<pila[i]) { // Alta al principio o intermedia
for(int j=top;j>i;j--)
pila[j]=pila[j-1];
pila[i]=dato;
top++;
System.out.println("dato insertado al principio o enmedio");
return;
}
}
pila[top++]=dato; //el dato se inserta al final de la pila
System.out.println("dato insertado al final");
return;
}

8
UNIVERSIDAD ABIERTA Y A DISTANCIA DE MEXICO

public void Pop(int dato) {


if(top==0) { // revisa que la pila este vacia
System.out.println("pila vacia");
return;
}
for(int i=0;i<top;i++) {
if(pila[i]==dato) {
for(int j=i; j<top-1; j++)
pila[j]=pila[j+1];
top--;
System.out.println("dato eliminado");
return;
}
}
System.out.println("el dato no existente");
}

public void Mostrar() {


System.out.println("***dato de la pila***");
if(top==0) System.out.println("pila vacia");
for(int i=0;i<top;i++)
System.out.println("pila["+i+"]="+pila[i]);
System.out.println("top="+top);
System.out.println("max="+max);
}
}

static ClasePila Pila=new ClasePila(); // declara el objeto Pila

public static void main(String args[]) throws IOException {


int op=0;
do {
op=0;
System.out.println("***pilas***");
System.out.println("1-funcion push");
System.out.println("2-funcion pop");
System.out.println("3-funcion mostrar pila");
System.out.println("0-Salir");

System.out.print("Opcion? ---> ");


op=getInt();

//selecciona una opcion para abrir la función que le corresponde


switch(op) {
case 1 : Altas(); break;
9
UNIVERSIDAD ABIERTA Y A DISTANCIA DE MEXICO

case 2 : Bajas(); break;


case 3 : Pila.Mostrar(); break;
}
}while(op!=0);
}

public static void Altas() throws IOException {


int dato=0;
System.out.println("***altas***");
System.out.print("\n Inserte dato");
dato=getInt();
Pila.Push(dato); // invocar el metodo push del objeto pila
}

public static void Bajas() throws IOException {


int dato=0;
System.out.println("**bajas**");
System.out.print("\n anote el dato que desea eliminar");
dato=getInt();
Pila.Pop(dato); // invocar el metodo pop del objeto pila
}

// funcion para capturar una cadena desde el teclado


public static String getString() throws IOException {
InputStreamReader isr = new InputStreamReader(System.in);
BufferedReader br = new BufferedReader(isr);
String s = br.readLine();
return s;
}

// funcion para capturar un entero desde el teclado


public static int getInt() throws IOException {
String s = getString();
return Integer.parseInt(s);
}
}

1.1 LISTAS

Ejemplo de una Lista de tamaño en el lenguaje Java según el portal [ CITATION pro12 \l
3082 ].

import java.io.*;
public class Listas {
public static class ClaseListas { // Declaracion de la clase de Listas

10
UNIVERSIDAD ABIERTA Y A DISTANCIA DE MEXICO

static char dato[]=new char[100]; //Declaracion del arreglo para los datos de tipo
char
static int sn[]=new int[100]; //Declaracion del arreglo para el indicador del sig.
nodo
static int apui, top; // Apuntador inicial y Cantidad de datos en la Lista
ClaseListas() { // Constructor de la ClaseListas
apui=-1;
top=0;
System.out.println("Lista enlazada inicializada !!!");
System.out.println("apui="+apui);
System.out.println("top ="+top);
}
public static void Mostrar() {
int i=0;
System.out.println("\n\n<<< MOSTRAR ESTRUCTURA >>>");
if(apui==-1) System.out.println("\nLista enlazada vacia !!!\n");
System.out.println("posicion dato sn");
System.out.println("---------------------------");
for(i=0;i<top;i++) {
System.out.println(i+" | "+dato[i]+" | "+sn[i]);
}
System.out.println("\napui="+apui);
System.out.println("top="+top);
}
public static void Insertar(char elemento) {
int i=0, ant=0;
if(apui==-1) { //Alta en Lista vacia
System.out.println("Insertar dato en lista vacia ...");
apui=top;
dato[top]=elemento;
sn[top]=-1;
top++;
return;
}
i=apui;
do {
if(dato[i]==elemento) {
System.out.println("Duplicado !!!");
return;
}
if(elemento<dato[i]) {
if(i==apui) { //Alta al principio
System.out.println("Insertando el dato menor de todos ...");
dato[top]=elemento;
sn[top]=apui;
apui=top;
top++;
11
UNIVERSIDAD ABIERTA Y A DISTANCIA DE MEXICO

return;
} else {
System.out.println("Alta intermedia ...");
dato[top]=elemento;
sn[top]=sn[ant];
sn[ant]=top;
top++;
return;
}
}
ant=i;
i=sn[i];
}while(i!=-1);
System.out.println("Alta al final ...");
dato[top]=elemento;
sn[top]=-1;
sn[ant]=top;
top++;
return;
}
}
// Declaracion del objeto Lista
static ClaseListas Lista=new ClaseListas();
//Funcion principal
public static void main(String args[]) throws IOException {
int op=0;
do {
System.out.println("\n\n<<< LISTAS ENLAZADAS >>>");
System.out.println("1.- Altas");
System.out.println("2.- Mostrar estructura");
System.out.print("Opcion? ---> ");
op=getInt();
switch(op) {
case 1 : Altas(); break;
case 2 : Lista.Mostrar(); break;
}
}while(op!=0);
}
public static void Altas() throws IOException {
char dato;
System.out.println("\n\n<<< ALTAS >>>");
System.out.print("Dato a insertar ---> ");
dato=getChar();
Lista.Insertar(dato); //Invocar el metodo Insertar del objeto Lista
}
//Funcion para capturar una cadena desde el teclado
public static String getString() throws IOException {
12
UNIVERSIDAD ABIERTA Y A DISTANCIA DE MEXICO

InputStreamReader isr = new InputStreamReader(System.in);


BufferedReader br = new BufferedReader(isr);
String s = br.readLine();
return s;
}

// Funcion para capturar un entero desde el teclado


public static int getInt() throws IOException {
String s = getString();
return Integer.parseInt(s);
}
//Funcion para capturar un caracter desde el teclado
public static char getChar() throws IOException {
String s=getString();
return s.charAt(0);
}
}

1.2 COLAS

Ejemplo de una Cola en el lenguaje Java según el portal [ CITATION pro12 \l 3082 ].

import java.io.*;

public class Colas {


public static class ClaseColas { // Declaracion de la clase de Colas
static int max=10; // Tamano maximo de la Cola
static int cola[]= new int[max]; // Declaracion del arreglo
static int frente, fin; // Indicadores de inicio y fin de la Cola

ClaseColas() { // Constructor que inicializa el frente y el final de la Cola


frente=0; fin=0;
System.out.println("Cola inicializada !!!");
}

public static void Insertar(int dato) {


if(fin==max) { // Esta llena la Cola?
System.out.println("\nCola llena !!!");
return;
}
cola[fin++]=dato;
System.out.println("Dato insertado !!!");
}

13
UNIVERSIDAD ABIERTA Y A DISTANCIA DE MEXICO

public static void Eliminar() {


System.out.println("\n\n<<< ELIMINAR >>>");
if(frente==fin) { // Esta vacia la Cola?
System.out.println("\nCola vacia !!!");
return;
}
System.out.println("Elemento eliminado: "+cola[frente++]);
}

public static void Mostrar() {


int i=0;
System.out.println("\n\n<<< MOSTRAR >>>");
if(frente==fin) System.out.println("\nCola vacia !!!");
for(i=frente; i<fin; i++) {
System.out.println("cola["+i+"]="+" "+cola[i]);
}
System.out.println("\nFrente= "+frente);
System.out.println("Final = "+fin);
System.out.println("Max = "+max);
}
}

static ClaseColas Cola=new ClaseColas(); // Declaracion del objeto Cola

// Funcion principal
public static void main(String args[]) throws IOException {
int op=0;
do {
System.out.println("\n\n<<< COLAS >>>");
System.out.println("1.- Altas");
System.out.println("2.- Eliminar");
System.out.println("3.- Mostrar");
System.out.println("0.- Salir");
System.out.print("Opcion? ---> ");
op=getInt();

switch(op) {
case 1 : Altas(); break;
case 2 : Cola.Eliminar(); break;
case 3 : Cola.Mostrar(); break;
}
}while(op!=0);
}

public static void Altas() throws IOException {


int elemento=0;
14
UNIVERSIDAD ABIERTA Y A DISTANCIA DE MEXICO

System.out.println("\n\n<<< ALTAS >>>");


System.out.print("Elemento a insertar? ---> ");
elemento=getInt();
Cola.Insertar(elemento); // Invocar el metodo Insertar del objeto Cola
}

// Funcion para capturar una cadena desde el teclado


public static String getString() throws IOException {
InputStreamReader isr = new InputStreamReader(System.in);
BufferedReader br = new BufferedReader(isr);
String s = br.readLine();
return s;
}

// Funcion para capturar un entero desde el teclado


public static int getInt() throws IOException {
String s = getString();
return Integer.parseInt(s);
}
}

BIBLIOGRAFIA

programacionparajava. (2012). https://programacionparajava.blogspot.com/. Obtenido de


https://programacionparajava.blogspot.com/p/programas-sencillos-usando-
estructura.html

15
UNIVERSIDAD ABIERTA Y A DISTANCIA DE MEXICO

Monografias.com S.A. (1 de Septiembre de 2017). https://www.monografias.com/.


Obtenido de https://www.monografias.com/docs110/tad-pila-enteros/tad-pila-
enteros.shtml
EcuRed contributors. (15 de Agosto de 2019). https://www.ecured.cu/. Obtenido de
https://www.ecured.cu/Listas_(Inform%C3%A1tica)
EcuRed contributors. (15 de Agosto de 2019). https://www.ecured.cu. Obtenido de
https://www.ecured.cu/index.php?title=Especial:Citar&page=Listas_%28Inform
%C3%A1tica%29&id=3506519

16

También podría gustarte