ESCUELA DE INGENIERÍA Y TECNOLOGÍA
PARTICIPANTE
DARLYN GIOMAL FRANCISCO PEÑA
MATRÍCULA
100011821
ASIGNATURA
ESTRUCTURA DE DATOS Y ALGORITMOS
TEMA
TAREA 6
FACILITADORA
Loida Charles Ramírez
FECHA
12 de Diciembre de 2024
Santiago de los Caballeros
República Dominicana
1. Crear un programa que haga uso de la clase lista enlazada para realizar las
siguientes acciones:
o Agregar al menos 5 valores a la lista.
o Imprimir la lista.
o Buscar si un valor está presente en la lista.
o Eliminar un valor de la lista.
o Volver a imprimir la lista después de la eliminación.
Condiciones:
El código debe estar bien estructurado y con comentarios explicativos.
Utiliza la estructura de lista enlazada simple (cada nodo tiene solo un puntero
al siguiente nodo).
El programa debe manejar correctamente la manipulación de nodos de la lista,
tanto al agregar como al eliminar.
CODIGO DEL PROGRAMA
using System;
// Clase Nodo que representa cada elemento de la lista
enlazada
public class Nodo
{
public int Valor; // Valor almacenado en el nodo
public Nodo Siguiente; // Puntero al siguiente nodo
public Nodo(int valor)
{
Valor = valor;
Siguiente = null;
}
}
// Clase ListaEnlazada que gestiona los nodos
public class ListaEnlazada
{
private Nodo cabeza; // Primer nodo de la lista
public ListaEnlazada()
{
cabeza = null;
}
// Método para agregar un nodo al final de la lista
public void Agregar(int valor)
{
Nodo nuevoNodo = new Nodo(valor);
if (cabeza == null)
{
cabeza = nuevoNodo;
}
else
{
Nodo actual = cabeza;
while (actual.Siguiente != null)
{
actual = actual.Siguiente;
}
actual.Siguiente = nuevoNodo;
}
}
// Método para imprimir los valores de la lista
public void Imprimir()
{
if (cabeza == null)
{
Console.WriteLine("La lista está vacía.");
return;
}
Nodo actual = cabeza;
Console.Write("Lista: ");
while (actual != null)
{
Console.Write(actual.Valor + " -> ");
actual = actual.Siguiente;
}
Console.WriteLine("null");
}
// Método para buscar un valor en la lista
public bool Buscar(int valor)
{
Nodo actual = cabeza;
while (actual != null)
{
if (actual.Valor == valor)
{
return true;
}
actual = actual.Siguiente;
}
return false;
}
// Método para eliminar un nodo con un valor específico
public void Eliminar(int valor)
{
if (cabeza == null)
{
Console.WriteLine("La lista está vacía, no se
puede eliminar.");
return;
}
if (cabeza.Valor == valor)
{
cabeza = cabeza.Siguiente;
Console.WriteLine($"Valor {valor} eliminado.");
return;
}
Nodo actual = cabeza;
while (actual.Siguiente != null &&
actual.Siguiente.Valor != valor)
{
actual = actual.Siguiente;
}
if (actual.Siguiente == null)
{
Console.WriteLine($"El valor {valor} no se
encuentra en la lista.");
}
else
{
actual.Siguiente = actual.Siguiente.Siguiente;
Console.WriteLine($"Valor {valor} eliminado.");
}
}
}
// Programa principal
public class Program
{
public static void Main(string[] args)
{
ListaEnlazada lista = new ListaEnlazada();
// Agregar valores a la lista
lista.Agregar(10);
lista.Agregar(20);
lista.Agregar(30);
lista.Agregar(40);
lista.Agregar(50);
// Imprimir la lista
Console.WriteLine("Lista original:");
lista.Imprimir();
// Buscar un valor en la lista
int valorABuscar = 30;
Console.WriteLine($"¿El valor {valorABuscar} está en
la lista? {lista.Buscar(valorABuscar)}");
// Eliminar un valor de la lista
int valorAEliminar = 20;
lista.Eliminar(valorAEliminar);
// Imprimir la lista después de la eliminación
Console.WriteLine("Lista después de la
eliminación:");
lista.Imprimir();
}
}
EJECUCION DEL PROGRAMA