Está en la página 1de 6

Listas Enlazadas Simples Lineales en C++

En esta ocacion les copartire este programa que hize sobre listas en enlazadas s imples que hace los siguiente: Inserta al inicio, final, en una posicion a espec ificar(antes o despues), reporta la lista, buca elemento, elimina elemento, elim ina elementos repetidos(a especificar). Aqui la imagen del menu del programa

En Ciencias de la Computacin, una lista enlazada es una de las estructuras de dat os fundamentales, y puede ser usada para implementar otras estructuras de datos. Consiste en una secuencia de nodos, en los que se guardan campos de datos arbit rarios y una o dos referencias (punteros) al nodo anterior o posterior. El princ ipal beneficio de las listas enlazadas respecto a los array convencionales es qu e el orden de los elementos enlazados puede ser diferente al orden de almacenami ento en la memoria o el disco, permitiendo que el orden de recorrido de la lista sea diferente al de almacenamiento.

1. Insercin: a. Insertar al Inicio. b. Insertar al Final. c. Insertar un elemento justo antes de uno especificado. d. Insertar un elemento justo despus de uno especificado.2.- Bsqueda. 3.- Reporte. 4.- Eliminacin de un elemento con valor V . 5.- Eliminacin de todos los elementos con valor V . Implementacion en C++/* Name: Listas Enlazadas simples en c++ Copyright: casicodigo.blogspot.com Author: Jose Martin Cruz Otiniano Date: 17/10/12 10:15 Description: Inserta, elimina, busca, reporta */ #include <iostream> #include <stdlib.h> using namespace std; struct nodo{ int nro; // en este caso es un numero entero struct nodo *sgte; }; typedef struct nodo *Tlista; void insertarInicio(Tlista &lista, int valor) { Tlista q; q = new(struct nodo); q->nro = valor; q->sgte = lista; lista = q;

} void insertarFinal(Tlista &lista, int valor) { Tlista t, q = new(struct nodo); q->nro = valor; q->sgte = NULL; if(lista==NULL) { lista = q; } else { t = lista; while(t->sgte!=NULL) { t = t->sgte; } t->sgte = q; } } int insertarAntesDespues() { int _op, band; cout<<endl; cout<<"\t 1. Antes de la posicion cout<<"\t 2. Despues de la posicion cout<<"\n\t Opcion : "; cin>> _op; if(_op==1) band = -1; else band = 0; return band; } void insertarElemento(Tlista &lista, int valor, int pos) { Tlista q, t; int i; q = new(struct nodo); q->nro = valor; if(pos==1) { q->sgte = lista; lista = q; } else { int x = insertarAntesDespues(); t = lista; for(i=1; t!=NULL; i++)

"<<endl; "<<endl;

{ if(i==pos+x) { q->sgte = t->sgte; t->sgte = q; return; } t = t->sgte; } } cout<<" } void buscarElemento(Tlista lista, int valor) { Tlista q = lista; int i = 1, band = 0; while(q!=NULL) { if(q->nro==valor) { cout<<endl<<" Encontrada en posicion "<< i <<endl; band = 1; } q = q->sgte; i++; } if(band==0) cout<<"\n\n Numero no encontrado..!"<< endl; } void reportarLista(Tlista lista) { int i = 0; while(lista != NULL) { cout <<' '<< i+1 <<") " << lista->nro << endl; lista = lista->sgte; i++; } } void eliminarElemento(Tlista &lista, int valor) { Tlista p, ant; p = lista; if(lista!=NULL) { while(p!=NULL) { if(p->nro==valor) { if(p==lista) lista = lista->sgte; else Error...Posicion no encontrada..!"<<endl;

ant->sgte = p->sgte; delete(p); return; } ant = p; p = p->sgte; } } else cout<<" Lista vacia..!"; } void eliminaRepetidos(Tlista &lista, int valor) { Tlista q, ant; q = lista; ant = lista; while(q!=NULL) { if(q->nro==valor) { if(q==lista) // primero elemento { lista = lista->sgte; delete(q); q = lista; } else { ant->sgte = q->sgte; delete(q); q = ant->sgte; } } else { ant = q; q = q->sgte; } }// fin del while cout<<"\n\n Valores eliminados..!"<<endl; } void menu1() { cout<<"\n\t\tLISTA ENLAZADA SIMPLE\n\n"; cout<<" 1. INSERTAR AL INICIO cout<<" 2. INSERTAR AL FINAL cout<<" 3. INSERTAR EN UNA POSICION cout<<" 4. REPORTAR LISTA cout<<" 5. BUSCAR ELEMENTO cout<<" 6. ELIMINAR ELEMENTO 'V' cout<<" 7. ELIMINAR ELEMENTOS CON VALOR 'V' cout<<" 8. SALIR cout<<"\n INGRESE OPCION: ";

"<<endl; "<<endl; "<<endl; "<<endl; "<<endl; "<<endl; "<<endl; "<<endl;

} /* Funcion Principal ---------------------------------------------------------------------*/ int main() { Tlista lista = int op; // int _dato; // int pos; //

NULL; opcion del menu elemenento a ingresar posicion a insertar

system("color 0b"); do { menu1(); cin>> op; switch(op) { case 1: cout<< "\n NUMERO A INSERTAR: "; cin>> _dato; insertarInicio(lista, _dato); break; case 2: cout<< "\n NUMERO A INSERTAR: "; cin>> _dato; insertarFinal(lista, _dato ); break; case 3: cout<< "\n NUMERO A INSERTAR: ";cin>> _dato; cout<< " Posicion : "; cin>> pos; insertarElemento(lista, _dato, pos); break; case 4: cout << "\n\n MOSTRANDO LISTA\n\n"; reportarLista(lista); break; case 5: cout<<"\n Valor a buscar: "; cin>> _dato; buscarElemento(lista, _dato); break; case 6: cout<<"\n Valor a eliminar: "; cin>> _dato;

eliminarElemento(lista, _dato); break; case 7: cout<<"\n Valor repetido a eliminar: "; cin>> _dato; eliminaRepetidos(lista, _dato); break; } cout<<endl<<endl; system("pause"); system("cls"); }while(op!=8); system("pause"); return 0; } ----------------------------------------------------------------------------------------