LISTAS EN C ++
#include<iostream>
typedef struct datos ;
typedef datos elemento ;
using namespace std;
struct datos{
int dato;
elemento *siguiente;
};
void error(void){
cout<<"error: insuficiente espacio de memoria"<<endl;
exit(1);
}
elemento *nuevo(){
elemento *q = (elemento *)malloc(sizeof(elemento));
if(!q){
error();
}
return(q);
}
void error(void);
void anadir(elemento **, int);
void borrar(elemento **, int);
elemento *buscar(elemento *,int);
void visualizar(elemento *);
int main(){
elemento *cabecera=NULL ;
elemento *q;
int dato,k=10;
char opcion;
bool salir =false;
while (! salir) {
cout<<"***LISTAS EN C++**"<<endl;
cout<<"A)INGRESAR UN ELEMENTO"<<endl;
cout<<"B)BORRAR UN ELEMENTO"<<endl;
cout<<"C)BUSCAR ELEMENTO"<<endl;
cout<<"D)MOSTRAR ELEMENTOS"<<endl;
cout<<"z)Salir"<<endl;
cout<<"Elija una opcion"<<endl;
cin>>opcion;
if(opcion == 'z' || opcion == 'Z' ){
salir = true;
}else{
switch(opcion){
case 'a':
case 'A':
cout<<"ingresar dato: "; cin>>dato;
anadir(&cabecera,dato);
break;
case 'b':
case 'B':
cout<<"borrar dato: "; cin>>dato;
borrar(&cabecera,dato);
break;
case 'c':
case 'C':
cout<<"buscar dato: "; cin>>dato;
q=buscar(cabecera,dato);
if(q==NULL) {
cout<<"Lista vacia"<<endl;
}
if(q!=NULL)
{
q->dato+=k;
cout<<"Elemento encontrado";
}
while(k!=q){
cout<<"Elemento no encontrado"<<endl;
}
break;
case 'd':
case 'D':
cout << "\n\n MOSTRANDO LISTA\n\n";
if(cabecera!=NULL){
visualizar(cabecera);
}else{
cout<<"\n\n\tLista vacia..!"<<endl;
}
break;
default:
cout << "Opcion no aceptada"<< endl;
}
system("PAUSE"); system("cls");
}
}
system("PAUSE");
}
void anadir(elemento **cab,int dato){
elemento *cabecera=*cab;
elemento *actual=cabecera, *anterior=cabecera,*q;
if(*cab==NULL){
cabecera =nuevo();
cabecera->dato=dato;
cabecera->siguiente=NULL;
*cab=cabecera;
return;
}
while(actual!=NULL&&dato>actual->dato){
anterior=actual;
actual=actual->siguiente;
}
//1) insertar al principio de la lista
//2) insertar despues d anterior
q=nuevo();
if(anterior==actual){
q->dato=dato;
q->siguiente=cabecera;
cabecera=q;
}
else{
q->dato=dato;
q->siguiente=actual;
anterior->siguiente=q;
}
*cab =cabecera;
}
void borrar(elemento **cab,int dato){
elemento *cabecera=*cab;
elemento *actual=cabecera,*anterior=cabecera;
if(!cabecera){
cout<<"lista vacia"<<endl;
return;
}
while(actual!=NULL&&dato!=actual->dato){
anterior=actual;
actual=actual->siguiente;
}
if(actual==NULL)return;
if(anterior==actual) {
cabecera=cabecera->siguiente;
}
else{
anterior->siguiente=actual->siguiente;
}
free(actual);
*cab=cabecera;
}
elemento *buscar(elemento *cabecera,int dato){
elemento *actual=cabecera;
while(actual!=NULL&&dato!=actual->dato){
actual=actual->siguiente;
}
return(actual);
}
void visualizar(elemento *cabecera){
elemento *actual=cabecera;
if(actual==NULL){
cout<<"lista vacia"<<endl;
}else{
while(actual!=NULL){
cout<<"\n"<<actual->dato<<endl;
actual=actual->siguiente;
}
cout<<"\n"<<endl;
}
}
Descarga Libros en c y c++ https://mega.nz/folder/ZckjDaLR#v5Bgwuv3ypM8uxOoKw90Wg
Comentarios
Publicar un comentario
Hola que tal,dime tu opinión