Está en la página 1de 10

Universidad Autónoma de Querétaro

Facultad de Informática
Ingeniería de Software (SOF18)
Estructura de datos

Actividad: Buscar elementos de una lista enlazada


Héctor Merari Sepúlveda Sierra
Expediente: 301571
jueves, 22 de septiembre de 2022
#include<stdio.h>
#include<iostream>
#include<stdlib.h>

struct Nodo
{
int dato;
Nodo *siguiente;
};

void menu();
void insertarLista(Nodo *&, int);
void mostrarLista(Nodo *, int);
void buscarLista(Nodo *, int);
void eliminarNodo(Nodo *, int);

Nodo *lista = NULL;

int main()
{
menu();
}

void menu()
{
int opc;
int dato, e, b, i, a;

do
{
printf("\n\t Menu: ");
printf("\n\t 1. Insertar elementos a una lista enlazada
");
printf("\n\t 2. Mostrar elementos de una lista enlazada
");
printf("\n\t 3. Buscar un elemento en una lista enlazada
");
printf("\n\t 4. Eliminar un elemento de una lista
enlazada ");
Universidad Autónoma de Querétaro
Facultad de Informática
Ingeniería de Software (SOF18)
Estructura de datos

printf("\n\t 5. Salir ");


printf("\n\n\t Opcion: ");
scanf("%i", &opc);
printf("\n");

switch(opc)
{
case 1:
printf("Ingrese el numero de elementos a
insertar: ");
scanf("%i", &e);
printf("\n");

for(i = 0; i < e; i++)


{
printf("Ingrese el elemento [%i]: ",
i+1);
scanf("%i", &dato);
insertarLista(lista, dato);
}
system("pause");
break;

case 2:
mostrarLista(lista, e);
system("pause");
break;

case 3:
printf("Digite el numero de la lista enlazada
a buscar: ");
scanf("%i", &b);
printf("\n");
buscarLista(lista, b);
system("pause");
break;

case 4:
printf("Digite el elemento de la lista
enlazada que desea eliminar: ");
scanf("%i", &a);
eliminarNodo(lista, a);
system("pause");
break;
Universidad Autónoma de Querétaro
Facultad de Informática
Ingeniería de Software (SOF18)
Estructura de datos

}
system("cls");
}while(opc != 3);
}

void insertarLista(Nodo *&lista, int n)


{
Nodo *nuevo_nodo = new Nodo();
nuevo_nodo -> dato = n;

Nodo *aux1 = lista;


Nodo *aux2;

while((aux1 != NULL) && (aux1 -> dato < n))


{
aux2 = aux1;
aux1 = aux1 -> siguiente;
}
if(lista == aux1)
{
lista = nuevo_nodo;
}
else
{
aux2 -> siguiente = nuevo_nodo;
}

nuevo_nodo -> siguiente = aux1;


printf("Elemento %i insertado correctamente \n\n", n);
}

void mostrarLista(Nodo *lista, int e)


{
int i;
Nodo *actual = new Nodo();
actual = lista;

if(actual == NULL)
{
printf("No existe ningun elemento en la lista enlazada
\n\n");
}

while(actual != NULL)
Universidad Autónoma de Querétaro
Facultad de Informática
Ingeniería de Software (SOF18)
Estructura de datos

{
printf("Los elementos de la lista enlazada son: \n");
for(i = 0; i < e; i++)
{
if(i != e-1){
printf("%i, ", actual->dato);
actual = actual -> siguiente;
}
if(i == e-1){
printf("%i \n\n", actual->dato);
actual = actual -> siguiente;
}
}

}
}

void buscarLista(Nodo *lista, int n)


{
bool band = false;

Nodo *actual = new Nodo();


actual = lista;

while((actual != NULL) && (actual -> dato <= n))


{
if(actual -> dato == n)
{
band = true;
}
actual = actual -> siguiente;
}
if(band == true)
{
printf("Elemento %i ha sido encontrado en la lista
\n\n", n);
}
else
{
printf("Elemento %i no ha sido encontrado en la lista
\n\n", n);
}
}
Universidad Autónoma de Querétaro
Facultad de Informática
Ingeniería de Software (SOF18)
Estructura de datos

void eliminarNodo(Nodo *lista, int n)


{
if(lista != NULL)
{
Nodo *aux_borrar;
Nodo *anterior = NULL;
aux_borrar = lista;

while((aux_borrar != NULL) && (aux_borrar -> dato != n))


{
anterior = aux_borrar;
aux_borrar = aux_borrar -> siguiente;
}

if(aux_borrar == NULL)
{
printf("Elemento %i no ha sido encontrado en la
lista \n\n", n);
}

else if(anterior == NULL)


{
lista = lista -> siguiente;
delete aux_borrar;
}

else
{
anterior -> siguiente = aux_borrar -> siguiente;
delete aux_borrar;
}
}
}
Universidad Autónoma de Querétaro
Facultad de Informática
Ingeniería de Software (SOF18)
Estructura de datos
Universidad Autónoma de Querétaro
Facultad de Informática
Ingeniería de Software (SOF18)
Estructura de datos
Universidad Autónoma de Querétaro
Facultad de Informática
Ingeniería de Software (SOF18)
Estructura de datos
Universidad Autónoma de Querétaro
Facultad de Informática
Ingeniería de Software (SOF18)
Estructura de datos
Universidad Autónoma de Querétaro
Facultad de Informática
Ingeniería de Software (SOF18)
Estructura de datos

También podría gustarte