Está en la página 1de 8

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);

Nodo *lista = NULL;

int main()
{
menu();
}

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

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 Salir ");
printf("\n\n\t Opcion: ");
scanf("%i", &opc);
Universidad Autónoma de Querétaro
Facultad de Informática
Ingeniería de Software (SOF18)
Estructura de datos

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;
}
system("cls");
}while(opc != 3);
}

void insertarLista(Nodo *&lista, int n)


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

Nodo *aux1 = lista;


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

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)
{
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;
Universidad Autónoma de Querétaro
Facultad de Informática
Ingeniería de Software (SOF18)
Estructura de datos

}
}

}
}

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
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