0% encontró este documento útil (0 votos)
46 vistas7 páginas

Aplicativo de Pilas para Gestión de Datos

El documento presenta un ejemplo de uso de pilas implementadas con listas enlazadas en C# para resolver diferentes problemas. Se define una clase Nodo que representa cada elemento de la lista y una clase Pila con métodos para insertar, buscar, modificar, eliminar nodos y desplegar la pila. El programa principal contiene un menú con diferentes opciones para probar los métodos implementados y resolver ejercicios como registrar ventas de clientes y productos en almacén usando pilas.

Cargado por

iSummerx ツ
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
46 vistas7 páginas

Aplicativo de Pilas para Gestión de Datos

El documento presenta un ejemplo de uso de pilas implementadas con listas enlazadas en C# para resolver diferentes problemas. Se define una clase Nodo que representa cada elemento de la lista y una clase Pila con métodos para insertar, buscar, modificar, eliminar nodos y desplegar la pila. El programa principal contiene un menú con diferentes opciones para probar los métodos implementados y resolver ejercicios como registrar ventas de clientes y productos en almacén usando pilas.

Cargado por

iSummerx ツ
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

JP_GUIA DE PRÁCTICA_S8

CURSO ESTRUCTURA DE DATOS


CARRERA Ingeniería de Sistemas Computacionales
DOCENTE Ing. Genrry Alcántara V.
OBJETIVO • Repaso.

EJERCICIOS 01:
En CinePlanet se requiere vender entradas de lo cual para poder acelerar el
proceso y optimizar ganancias se pide al área de TI que genere un aplicativo de
listas (Pilas) teniendo los siguientes requerimientos:
a) Ingresar Alimentos de la pila.
b) Generar búsquedas de elementos de la pila por cada entrada.
c) Generar una modificación por dicha entrada.
d) Eliminar un nodo de la lista de entrada.
e) Desplegar una pila de entrada.
f) Eliminar la lista de las filas por completo.
g) Generar una salida final cuenta.

/////////////////////////////// NODO /////////////////////////////


class Nodo
{
//Estructura del nodo
private int dato;
private Nodo siguiente;

//Encapsulamiento - Propiedades de las variables


public int Dato
{
get { return dato; }
set { dato = value;}
}

public Nodo Siguiente


{
get { return siguiente;}
set { siguiente = value; }
}
}
/////////////////////////////// LISTA /////////////////////////////
class Pila
{
private Nodo Primero = new Nodo();

//Constructor
public Pila()
{
Primero = null;
}

//DEfinir métodos
//Insertar nodo
public void InsertarNodo()
{
//Construir el nodo - Objeto
Nodo Nuevo = new Nodo();
//Ingresar dato al nodo
Console.Write("Ingrese el dato para el nodo: ");
Nuevo.Dato = int.Parse(Console.ReadLine());
//20/10/15/80

Nuevo.Siguiente = Primero;
Primero = Nuevo;

Console.WriteLine("Nodo ingresado");
}

//Método para desplegar/imprimir la pila


public void DesplegarPila()
{
//Instanciar al nodo
Nodo Actual = new Nodo();
Actual = Primero; //Cima de la pila - 80
//Verificar si la pila está vacía
if (Primero != null)//80
{
//Imprimir los datos de los nodos de la pila
while (Actual != null)//80/15//10/20
{
Console.WriteLine(" " + Actual.Dato); //80-15-
10-20
Actual = Actual.Siguiente; //15-10-20-null
}
}
else
{
Console.WriteLine("Pila vacia");
}
}

public void BuscarNodo()


{
Nodo Actual = new Nodo();
Actual = Primero; //Cima de la pila -80
//Variable de control
bool Encontrado = false;
//Ingresar nodo a buscar
Console.Write("Ingrese nodo a buscar : ");
int nodoBuscado = int.Parse(Console.ReadLine()); //15

//Validar que la pila este vacia


if (Primero != null) //80
{
while (Actual != null && Encontrado != true) //80
y false --> V//15 y false --> V // 20 y true --> F

{
if (Actual.Dato == nodoBuscado) //80 = 15 -->
F // 15 = 15 --> V
{
Console.WriteLine("El nodo con el dato
({0}) Encontrado ", nodoBuscado); //15
Encontrado = true; // false --> true
}
Actual = Actual.Siguiente; //80 --> 15 -- > 20
}
if (!Encontrado) // negación true = false
{
Console.WriteLine("Nodo no encontrado");
}
}
else
{
Console.WriteLine("Pila vacia");
}

}
public void ModificarNodo()
{
Nodo Actual = new Nodo();
Actual = Primero;
bool Encontrado = false;
Console.WriteLine("Ingrese elemento a
modificar:");
int nodoBuscado = int.Parse(Console.ReadLine());
if (Primero != null)
{
while (Actual != null && Encontrado != true)
{
if (Actual.Dato == nodoBuscado)
{
Console.WriteLine("El nodo con el dato
({0}) Encontrado ", nodoBuscado);
Console.Write("Ingrese el nuevo valor ");
Actual.Dato =
int.Parse(Console.ReadLine());
Console.Write("Nodo modificado");
Encontrado = true;
}
Actual = Actual.Siguiente;
}
if (!Encontrado)
{
Console.WriteLine("Nodo no encontrado");
}
}
else
{
Console.WriteLine("Pila vacia");
}
}
public void EliminarNodo()
{
Nodo Actual = new Nodo();
Actual = Primero;
Nodo Anterior = new Nodo();
Anterior = null;
bool Encontrado = false;
Console.WriteLine("Ingrese dato a eliminar : ");
int nodoBuscado = int.Parse(Console.ReadLine());
if(Primero != null)
{
while (Actual != null && Encontrado != true)
{
if (Actual.Dato == nodoBuscado)
{
Console.WriteLine("Nodo encontrado ({0})
", nodoBuscado);
if(Actual == Primero)
{
Primero =
Primero.Siguiente;
}
else
{
Anterior.Siguiente = Actual.Siguiente;
}
Console.WriteLine("Nodo eliminado");
Encontrado = true;
}
Anterior = Actual;
Actual = Actual.Siguiente;
}

if (!Encontrado){
Console.WriteLine("Nodo no encontrado");
}
}
else
{
Console.WriteLine("Pila Vacia");
}
}
public void EliminarPila()
{
Primero = null;
}
}

//////////////////////// PRINCIPAL////////////////////////////////

namespace S05_Pilas
{
class Program
{
static void Main(string[] args)
{
//Instanciar la clase Pila
Pila P = new Pila();
//Definir variable de opción
int opcionMenu;
do
{
Console.WriteLine("Menú Pilas con
listas enlazadas");
Console.WriteLine(" 1.- Insertar elemento");
Console.WriteLine(" 2.- Buscar elemento");
Console.WriteLine(" 3.- Modificar elemento");
Console.WriteLine(" 4.- Eliminar Nodo de pila");
Console.WriteLine(" 5.- Desplegar Pila");
Console.WriteLine(" 6.- Eliminar Pila");
Console.WriteLine(" 7.- Salir");
Console.Write(" Ingrese su opción : ");
opcionMenu = int.Parse(Console.ReadLine());

switch (opcionMenu)
{
case 1:
Console.WriteLine("INSERTAR NODO EN LA
PILA");
P.InsertarNodo();
break;
case 2:
Console.WriteLine("BUSCAR NODO EN LA
PILA");
P.BuscarNodo();
break;
case 3:
Console.WriteLine("MODIFICAR NODO EN LA
PILA");
P.ModificarNodo();
break;
case 4:
Console.WriteLine("ELIMINAR NODO EN LA
PILA");
P.EliminarNodo();
break;
case 5:
Console.WriteLine("IMPRIMIR PILA");
P.DesplegarPila();
break;
case 6:
Console.WriteLine("ELIMINAR PILA");
P.EliminarPila();
break;
case 7:
Console.WriteLine("FINALIZAR PROGRAMA");
break;
default:
Console.WriteLine("ERROR, LA OPCION NO ES
VALIDA. INTENTE DE NUEVO");
break;
}
Console.ReadKey();
Console.Clear();
}
while (opcionMenu != 7);

}
}
}

EJERCICIOS 02:
Se requiere la presentación de ventas de un salón de belleza con 8 clientes (código,
nombre, apellidos y precio) con el promedio en general, utilizando la estructura de pila
se requiere lo siguiente:
A. Apilar clientes en la presentación de ventas.
B. Mostrar el reporte de ventas (detalle de cada cliente y el promedio de ventas
obtenido).

EJERCICIOS 03:
En un almacén se necesita registrar el ingreso de los productos (código, tipo, nombre,
cantidad y precio) y realizar lo siguiente:
A. Apilar productos al almacén.
B. Mostrar un reporte que contenga la cantidad total de productos agrupados por
tipo (Oficina, utilitarios, juegos) con su valor respectivo en soles (cantidad x
precio) y mostrar el valor total del almacén.

También podría gustarte