Documentos de Académico
Documentos de Profesional
Documentos de Cultura
#include <iostream>
using namespace::std;
struct nodo {
int dato;
nodo* siguiente;
} *cabecera, * ultimo;
void insertarDato();
void buscarDato();
void modificarDato();
void eliminarDato();
void mostrarLista();
void ordenarLista();
int main() {
int opcion_menu = 0;
do
{
cout << "\n|-------------------------------------------|";
cout << "\n| ° LISTAS ENLAZADAS SIMPLES ° |";
cout << "\n|--------------------|----------------------|";
cout << "\n| 1. Insertar dato | 5. Mostrar lista |";
cout << "\n| 2. Buscar dato | 6. Ordenar lista |";
cout << "\n| 3. Modificar dato | 7. Salir |";
cout << "\n| 4. Eliminar dato | |";
cout << "\n|--------------------|----------------------|";
cout << "\n\n Escoja una Opcion: ";
cin >> opcion_menu;
switch (opcion_menu) {
case 1:
cout << "\n\n INSERTA UN DATO EN LA LISTA \n\n";
insertarDato();
break;
case 2:
cout << "\n\n BUSCAR UN DATO DE LA LISTA \n\n";
buscarDato();
break;
case 3:
cout << "\n\n MODIFICAR UN DATO DE LA LISTA \n\n";
modificarDato();
break;
case 4:
cout << "\n\n ELIMINAR UN DATO DE LA LISTA \n\n";
eliminarDato();
break;
case 5:
cout << "\n\n MOSTRAR LISTA DE DATOS \n\n";
mostrarLista();
Estructura de Datos - Sesión 2
break;
case 6:
cout << "\n\n MOSTRAR LISTA DE DATOS \n\n";
ordenarLista();
break;
case 7:
cout << "\n\n PROGRAMA FINALIZADO.";
break;
default:
cout << "\n\n OPCION NO CONOCIDA. \n\n";
}
} while (opcion_menu != 7);
return 0;
}
void insertarDato() {
nodo* nuevo = new nodo();
if (cabecera == NULL) {
cabecera = nuevo;
cabecera->siguiente = NULL;
ultimo = nuevo;
}
else {
ultimo->siguiente = nuevo;
nuevo->siguiente = NULL;
ultimo = nuevo;
}
}
void buscarDato() {
nodo* actual = new nodo();
actual = cabecera;
bool encontrado = false;
int datoBuscado = 0;
if (cabecera != NULL) {
while (actual != NULL) {
if (actual->dato == datoBuscado) {
cout << "\n Un nodo con el dato " << datoBuscado << "
fue encontrado.\n";
encontrado = true;
}
actual = actual->siguiente;
}
if (!encontrado)
cout << "\n No fue encontrado un nodo que contenga el dato
buscado.\n";
}
else
cout << "\n La lista no tiene datos.\n\n";
}
void modificarDato() {
nodo* actual = new nodo();
Estructura de Datos - Sesión 2
actual = cabecera;
bool encontrado = false;
int datoBuscado = 0, datoModificacion = 0;
if (cabecera != NULL) {
while (actual != NULL) {
if (actual->dato == datoBuscado) {
cout << "\n Un nodo con el dato " << datoBuscado << "
fue encontrado.\n";
actual->dato = datoModificacion;
encontrado = true;
}
actual = actual->siguiente;
}
if (!encontrado)
cout << "\n No fue encontrado el dato que se quiere
modificar.\n";
}
else
cout << "\n La lista no tiene datos.\n\n";
}
void eliminarDato() {
nodo* actual = new nodo();
actual = cabecera;
nodo* anterior = new nodo();
anterior = NULL;
bool encontrado = false;
int datoBuscado = 0;
if (cabecera != NULL) {
while (actual != NULL) {
if (actual->dato == datoBuscado) {
cout << "\n Un nodo con el dato " << datoBuscado << "
fue encontrado.\n";
if (actual == cabecera) {
cabecera = cabecera->siguiente;
}
else if (actual == ultimo) {
anterior->siguiente = NULL;
ultimo = anterior;
}
else
anterior->siguiente = actual->siguiente;
cout << "\n El nodo que contiene el dato fue
eliminado.\n\n";
encontrado = true;
}
anterior = actual;
actual = actual->siguiente;
}
if (!encontrado)
cout << "\n No fue encontrado el dato que se quiere
eliminar.\n";
Estructura de Datos - Sesión 2
}
else
cout << "\n La lista no tiene datos.\n\n";
}
void ordenarLista()
{
nodo* actual = new nodo();
nodo* siguiente = new nodo();
int aux;
bool estaOrdenada = false;
while (!estaOrdenada)
{
estaOrdenada = true;
actual = cabecera;
while (actual->siguiente != NULL)
{
siguiente = actual->siguiente;
if (actual->dato > siguiente->dato)
{
aux = actual->dato;
actual->dato = siguiente->dato;
siguiente->dato = aux;
estaOrdenada = false;
}
actual = siguiente;
}
}
}
void mostrarLista() {
nodo* actual = new nodo();
actual = cabecera;
if (cabecera != NULL) {
while (actual != NULL) {
cout << " " << actual->dato << " -> ";
actual = actual->siguiente;
}
cout << "NULL" << endl;
}
else
cout << "\n La lista no tiene datos.\n";
}
#include <iostream>
using namespace std;
struct nodo
{
int dato;
nodo* siguiente;
};
Estructura de Datos - Sesión 2
int main()
{
nodo* p = NULL, * q = NULL, * ListaMezclada = NULL, * ultimo;
int cp, cq, dato;
system("cls");
return 0;
}
nuevo->dato = nuevoDato;
if (lista == NULL)
lista = nuevo;
else
ultimo->siguiente = nuevo;
ultimo = nuevo;
}
return listaMezclada;
}