Documentos de Académico
Documentos de Profesional
Documentos de Cultura
LABORATORIO 5
ESTRUCTURA DE DATOS
DOCENTE:
ALUMNO:
CICLO: II
TRUJILLO - PERU
2022
Listas Enlazadas Simples Lineales (LESL)
I) Crea una lista (LESL) e insertar “n” números enteros hacia el final
II) Luego Sobre dicha Lista de números enteros. Diseñe e implemente los
siguientes algoritmos:
1.- Inserción:
a) Insertar al Inicio.
b) Insertar al Final.
c) Insertar un elemento justo antes de uno especificado.
d) d. Insertar un elemento justo después de uno especificado.
2.- Reporte.
3.- Búsqueda.
4.- Eliminación de un elemento con valor ‘V’.
5.- Eliminación de todos los elementos con valor ‘V’.
6.- Eliminar x-ésimo elemento
#include<iostream>
#include<conio.h>
#include<string.h>
#include<stdlib.h>
//Estructura Nodo
struct Nodo{
int dato;
Nodo *siguiente;
};
//Prototipos Funciones
void insertarInicio(Nodo *&, int);
void insertarFinal(Nodo *&, int);
void insertarElemento(Nodo *&, int, int);
int insertarAntesDespues();
void mostrarLista(Nodo *);
void buscarLista(Nodo *, int);
void eliminarNodo(Nodo *&, int);
void eliminarRepetido(Nodo *&, int);
void eliminarPosicion(Nodo *&, int);
void menu();
void menuInsercion();
//Funcion Principal
int main()
{
int n;
system("cls");
menu();
getch();
return 0;
}
void menu(){
do{
cout<<"\n\n\t\t.:MENU:.\n";
cout<<"\t[1] Insercion\n";
cout<<"\t[2] Reporte\n";
cout<<"\t[3] Busqueda\n";
cout<<"\t[4] Eliminar elemento con valor 'V' \n";
cout<<"\t[5] Eliminar todos los elementos con valor 'V'"<<endl;
cout<<"\t[6] Eliminar x-esimo elemento \n";
cout<<"\t[7] Salir\n";
cout<<"\tOpcion: ";cin>>op;
system("cls");
switch(op){
case 1: menuInsercion();
break;
case 2: mostrarLista(lista);
cout<<"\n";
system("pause");
break;
system("cls");
} while(op != 7);
void menuInsercion(){
do{
cout<<"\n\n\t\t.:MENU INSERCION:.\n";
cout<<"\t[1] Insertar al Inicio\n";
cout<<"\t[2] Insertar al Final\n";
cout<<"\t[3] Insertar en una posicion\n";
cout<<"\t[4] Volver\n";
cout<<"\tOpcion: ";cin>>op;
switch(op){
case 1: cout<<"\n\tDigite un numero: "; cin>>dato;
insertarInicio(lista,dato);
cout<<"\n";
break;
system("cls");
//Funcion Principal
int main()
{
int n;
system("cls");
menu();
getch();
return 0;
}
void menu(){
do{
cout<<"\n\n\t\t.:MENU:.\n";
cout<<"\t[1] Insercion\n";
cout<<"\t[2] Reporte\n";
cout<<"\t[3] Busqueda\n";
cout<<"\t[4] Eliminar elemento con valor 'V' \n";
cout<<"\t[5] Eliminar todos los elementos con valor 'V'"<<endl;
cout<<"\t[6] Eliminar x-esimo elemento \n";
cout<<"\t[7] Salir\n";
cout<<"\tOpcion: ";cin>>op;
system("cls");
switch(op){
case 1: menuInsercion();
break;
case 2: mostrarLista(lista);
cout<<"\n";
system("pause");
break;
system("cls");
} while(op != 7);
void menuInsercion(){
do{
cout<<"\n\n\t\t.:MENU INSERCION:.\n";
cout<<"\t[1] Insertar al Inicio\n";
cout<<"\t[2] Insertar al Final\n";
cout<<"\t[3] Insertar en una posicion\n";
cout<<"\t[4] Volver\n";
cout<<"\tOpcion: ";cin>>op;
switch(op){
case 1: cout<<"\n\tDigite un numero: "; cin>>dato;
insertarInicio(lista,dato);
cout<<"\n";
break;
system("cls");
} while(op != 4);
}
int insertarAntesDespues(){
system("cls");
do{
cout<<"\n\n\t\t.:INSERTAR EN UNA POSICION:.\n";
cout<<"\t[1] Insertar antes de una posicion\n";
cout<<"\t[2] Insertar despues de una posicion\n";
cout<<"\t[3] Volver\n";
cout<<"\tOpcion: "; cin>>op;
system("cls");
switch(op){
case 1: band = -1;
break;
case 2: band = 0;
break;
}
return band;
} while(op != 3);
}
void insertarInicio(Nodo *&lista, int n){
Nodo *nuevo_nodo = new Nodo();
nuevo_nodo->dato = n;
nuevo_nodo->siguiente = lista;
lista = nuevo_nodo;
}
nuevo_nodo->dato = n;
nuevo_nodo->siguiente = NULL;
Nodo *aux;
if(lista == NULL){
lista = nuevo_nodo;
}
else{
aux = lista;
while(aux->siguiente != NULL){
aux = aux->siguiente;
}
aux->siguiente = nuevo_nodo;
}
}
void insertarElemento(Nodo *&lista, int n, int pos){
Nodo *nuevo_nodo = new Nodo();
nuevo_nodo->dato = n;
Nodo *aux;
if(pos == 1){
nuevo_nodo->siguiente = lista;
lista = nuevo_nodo;
}
else{
int x = insertarAntesDespues();
aux = lista;
}
aux = aux->siguiente;
}
}
cout<<"\tError ...Posicion no encontrada..!"<<endl;
}
void mostrarLista(Nodo *lista){
Nodo *actual = new Nodo();
actual = lista;
while(actual != NULL){
cout<<actual->dato<<" -> ";
actual = actual->siguiente;
}
}
void buscarLista(Nodo *lista, int n){
bool band = false;
while(actual != NULL){
if(actual->dato == n){
band = true;
}
actual = actual->siguiente;
}
if(band == true){
cout<<"\n\tEl elemento "<<n<<" SI ha sido encontrado";
}
else{
cout<<"\n\tEl elemento "<<n<<" NO ha sido encontrado";
}
}
void eliminarNodo(Nodo *&lista, int n){
Nodo *aux_borrar = lista;
Nodo *anterior;
if(lista != NULL){
while(aux_borrar != NULL){
if(aux_borrar->dato==n){
if(aux_borrar==lista){
lista = lista->siguiente;
}
else{
anterior->siguiente = aux_borrar->siguiente;
delete aux_borrar;
}
}
anterior = aux_borrar;
aux_borrar = aux_borrar->siguiente;
}
}
else{
cout<<"\n\tLista Vacia..!";
}
}
while(aux_borrar != NULL){
if(aux_borrar->dato == n){
if(aux_borrar==lista){
lista = lista->siguiente;
delete aux_borrar;
aux_borrar = lista;
}
else{
anterior->siguiente = aux_borrar->siguiente;
delete aux_borrar;
aux_borrar = anterior->siguiente;
}
}
else{
anterior = aux_borrar;
aux_borrar = aux_borrar->siguiente;
}
}
cout<<"\nValores Eliminados...\n";
}
void eliminarPosicion(Nodo *&lista, int pos){
Nodo *aux_borrar = lista;
Nodo *anterior;
int i=1;
if(lista != NULL){
while(aux_borrar != NULL){
if(pos == i){
if(aux_borrar==lista){
lista = lista->siguiente;
}
else{
anterior->siguiente = aux_borrar->siguiente;
delete aux_borrar;
return;
}
}
i++;
anterior = aux_borrar;
aux_borrar = aux_borrar->siguiente;
}
}
else{
cout<<"\n\tLista Vacia..!";
}
}