Está en la página 1de 8

Practica lista enlazada simple

Jesus Alexander Parada Vásquez 212052


Introduccion.
En esta practica se tiene como objetivo implementar una lista enlazada simple
donde permita al usuario realizar varias operaciones en ella, como agregar
elementos al inicio de la lista, imprimir la lista, agregar elementos después de
imprimir la lista, buscar elementos en la lista y nunca salir del programa al menos
que el usuario lo indique en la consola, para así entender el funcionamiento de
una lista enlazada simple.
Código Fuente.
/*Practica Lista.
Alumno: Jesus Alexander Parada Vasquez 212052.
*/
#include <iostream>

using namespace std;

class nodo {
int inf;
nodo* next;

public:
nodo(int i, nodo* n) //es cada elemento de la lista enlazada
{
inf = i; //almacena su información y un puntero
next = n;// puntero next que apunta al siguiente elemento de la
lista
}

friend class lista;


};

class lista {
Practica lista enlazada simple
Jesus Alexander Parada Vásquez 212052
nodo* first;// clase lista con el puntero first que apunta al primer
elemento de la lista

public:
lista() {
first = NULL;
}

bool agregar_inicio(int);
void imprimir();
bool agregar_despues_imprimir(int, int);
nodo* buscar(int);
};

bool lista::agregar_inicio(int e)// añade un nuevo elemento al inicio de


la lista
{
if (first = new nodo(e, first))//Si se puede asignar memoria para el
nuevo nodo,crea un nuevo nodo con el valor e
return true;//establece a e como el primer nodo de la lista
else
return false;//si no se puede asignar memoria,devuelve false
}

void lista::imprimir() { //" recorre la lista desde el primer nodo e


imprime los valores de cada nodo
nodo* temp;
temp = first;

while (temp != NULL) {


cout << temp->inf << " ";
Practica lista enlazada simple
Jesus Alexander Parada Vásquez 212052
temp = temp->next;
}

cout << endl;


}

bool lista::agregar_despues_imprimir(int e, int c) {


nodo * temp;
temp=first;

while(temp!= NULL)
{
if(temp -> inf==e)
{
nodo * temp2;
temp2= new nodo (c,temp -> next);
temp ->next=temp2;
return true;
}
else
temp =temp->next;
}
cout << "no existe" <<e<<endl;
return false;
}

nodo* lista::buscar(int e)//esta función busca el elemento "e" en la lista


{
nodo* actual = first;
Practica lista enlazada simple
Jesus Alexander Parada Vásquez 212052
while (actual != NULL) {
if (actual->inf == e) {
return actual;
}

actual = actual->next;//devuelve un puntero al nodo que contiene


el elemento si se encuentra
}

return NULL;// Si no se encuentra, devuelve NULL


}

int main() {
lista l1;
int opcion, valor, e, c;

do {
cout << "Menu de opciones:" << endl;
cout << "1. Agregar al inicio" << endl;
cout << "2. Imprimir lista" << endl;
cout << "3. Agregar despues de imprimir" << endl;
cout << "4. Buscar elemento" << endl;
cout << "5. Salir" << endl;

cout << "Seleccione una opcion: ";


cin >> opcion;

switch (opcion) {
case 1:
cout << "Ingrese el valor a agregar: ";
Practica lista enlazada simple
Jesus Alexander Parada Vásquez 212052
cin >> valor;
if (l1.agregar_inicio(valor)) {
cout << "Se agrego el elemento " << valor << " al inicio de
la lista" << endl;
} else {
cout << "No se pudo agregar el elemento" << endl;
}
system("pause");
system("cls");
break;

case 2:
cout << "La lista es: ";
l1.imprimir();
system("pause");
system("cls");
break;
case 3:
cout << "Ingrese el valor a agregar: ";
cin >> c;
cout <<"agregar despues del numero";
cin >> e;
l1.agregar_despues_imprimir(e,c);
system("pause");
system("cls");
break;
case 4:
cout << "Ingrese el valor a buscar: ";
cin >> valor;
if (l1.buscar(valor)) {
Practica lista enlazada simple
Jesus Alexander Parada Vásquez 212052
cout << "Se encontro el elemento " << valor << " en la lista"
<< endl;
} else {
cout << "No se encontro el elemento en la lista" << endl;
}
system("pause");
system("cls");
break;

case 5:
cout << "Saliendo..." << endl;
system("pause");
system("cls");
break;

default:
cout << "Opcion invalida, intente de nuevo" << endl;
system("pause");
system("cls");
break;
}
} while (opcion != 5);
return 0;
}

Pantalla de Ejecución.
Prueba con la opcion 1(Agregar)
Practica lista enlazada simple
Jesus Alexander Parada Vásquez 212052

Prueba con la opcion 2(Imprimir)

Prueba con la opcion 3(Agregar despues de imprimir,en este caso un 5 antes del 13)

Prueba con la opcion 4(Buscar elemento,en este caso el 10)


Practica lista enlazada simple
Jesus Alexander Parada Vásquez 212052
Conclusiones.
En conclusión, la práctica de la lista enlazada simple es una herramienta útil para
aprender cómo funcionan las estructuras de datos y cómo se implementan en un
lenguaje de programación. Ya que me pareció bastante interesante el hecho de
cuando se agrega un nuevo elemento al inicio de la lista, se crea un nuevo nodo y
se establece como el primer nodo de la lista, y otro que me pareció interesante fue
como el buscar va buscando el elemento en la lista, y que la función devuelva un
puntero al nodo que contiene ese elemento, y así va buscando en toda la
lista,para ver si existe o no, para en caso de no, devolver un NULL.

También podría gustarte