# include <MMD_Funcs.
h>// Mi propia libreria que tiene mis funciones y las demas librerias
using namespace std;
struct Datos{
char Marca [15];
char Modelo[30];
int Color;
float Precio;
double Talla;
};
Datos Ini={'\0,\0,0,0.0.0.0'};
Datos LeerDatos(){
Datos L;
cout <<" Marca de Calzado : " ;cin>>L.Marca;
cout<<endl; fflush(stdin);
cout<<" Modelo de Calzado : "; cin>> L.Modelo;
cout<<endl; fflush(stdin);
cout<< " Ingrese el Tipo de color "<<endl<<endl;
cout<< " 1)Blanco 2)Negro 3)Gris 4)Azul 5)Rojo 6)Personalizado"<<endl<<endl;
cout<<" Color : "; cin>>L.Color;
cout<<endl;
cout<<" Precio : $"; cin>> L.Precio;
cout<<endl;
cout<<" Talla (MEX) : "; cin>> L.Talla;
return(L);
}
class Nodo
{ Datos Dato;
Nodo *sig, *ant;
public:
Nodo(Datos d=Ini, Nodo *a=NULL, Nodo *s=NULL)
{ Dato = d; ant = a; sig = s;}
void ModDatos (Datos d) {Dato=d;}
void ModAnt (Nodo *a) { ant=a;}
void ModMarca(char M[15]){strcpy(M,Dato.Marca);}
void ModModelo(char m[30]){strcpy(m,Dato.Modelo);} //Se aplica la función strcpy()
void ModColor(int c) {Dato.Color=c;}
void ModPrecio(float p) {Dato.Precio=p;}
void ModTalla(double t) {Dato.Talla=t;}
void ModSig(Nodo *s) {sig=s;}
Datos RegDato() {return(Dato);}
char *RegMarca() {return(Dato.Marca);}
char *RegModelo() {return(Dato.Modelo);}
int RegColor() {return(Dato.Color);}
float RegPrecio() {return(Dato.Precio);}
double RegTalla() {return(Dato.Talla);}
Nodo *RegSig() {return(sig);}
Nodo *RegAnt() {return(ant);}
};
class LDE
{ Nodo *st, *ed, *gen;
Nodo *aux, *aux1;//
public:
LDE(){ st=ed=gen=NULL; }
void Insertar(Datos x);
void InsOrd(Datos x);
void Buscar(char M[30]);
void Modificar();
void Eliminar();
void GuardaArch();
void LeerArch();
void Imprimir();
};
void LDE::Insertar(Datos x){
if (st==NULL){
gen = new Nodo(x);
if(gen==NULL){
cout<< "No hay memoria";
exit(1);
st=ed=gen;
else{
Nodo *p=gen;
gen = new Nodo(x,p);//
if(gen==NULL){
cout<< "No hay memoria";
exit(1);
}
p->ModSig(gen);
ed=gen;
void LDE::InsOrd(Datos x){
Nodo *p, *q;
if (st == NULL){
gen = new Nodo(x);
if(gen==NULL){
cout<< "No hay memoria";
exit(1);
st=ed=gen;
} else {
p = st;
if(strcmp(x.Modelo,p->RegModelo())<0){ //
gen = new Nodo(x,NULL,p);
if(gen==NULL){
cout<< "No hay memoria";
exit(1);
st = gen;
} else {
p = ed;
if(strcmp(x.Modelo,p->RegModelo())>0){
gen = new Nodo(x,p);
if(gen==NULL){
cout<< "No hay memoria";
exit(1);
p->ModSig(gen);
ed=gen;
} else {
p=st;
while(strcmp(x.Modelo,p->RegModelo())>0){
p=p->RegSig();
q=p->RegAnt();
gen = new Nodo(x,q,p);
if(gen==NULL){
cout<< "No hay memoria";
exit(1);
p->ModAnt(gen);
q->ModSig(gen);
//cin.getline(2);
// condiciones y funcion para que me ordene los caraceres alfabeticamente
void LDE::Buscar(char M[30]){
aux = st;
while(strcmp(M,aux->RegModelo())!=0){//
aux1=aux;
aux = aux->RegSig();
if(aux==NULL){
cout<<"No existe el modelo" ;
return;
cout<<" Modelo encontrado ";
cout <<"\n\t" <<aux -> RegMarca()<<setw(10)
<<aux -> RegModelo()<<setw(10)<<"\n";
return;
void LDE::Modificar(){
Datos NvoDato;
NvoDato = LeerDatos();
aux->ModDatos(NvoDato);
cout<< aux->RegMarca()<<"\t"
<< aux->RegModelo()<<"\t"
<< aux->RegColor()<<"\t"
<< aux->RegPrecio()<<"\t"
<< aux->RegTalla()<<endl;
void LDE::Eliminar(){
if(aux==st){
st =aux->RegSig();
aux->ModSig(NULL);
delete(aux);
} else{
if(aux==ed){
ed=aux1;
aux1->ModSig(NULL);
delete(aux);
} else{
aux1->ModSig(aux->RegSig());
aux->ModSig(NULL);
delete(aux);
void LDE::Imprimir(){
Nodo *i;
cout<<setw(12)<<" -Marca-"<<setw(10)<<" -Modelo-"<<
setw(10)<<" -#Color-"<<setw(10)<<" -Precio-"<<
setw(10)<<" -Talla-"<<endl;
for( i = st; i != NULL; i = i->RegSig()){
cout <<"\n\t" <<i -> RegMarca()<<setw(10)<<
i -> RegModelo()<<setw(10)<<
i -> RegColor()<<setw(10)<<
i -> RegPrecio()<<setw(10)<<
i -> RegTalla()<<setw(10)<<"\n";
}
cout<<endl<<endl;
for ( i = ed; i != NULL; i = i->RegAnt()){
cout <<"\n\t" <<i -> RegMarca()<<setw(10)<<
i -> RegModelo()<<setw(10)<<
i -> RegColor()<<setw(10)<<
i -> RegPrecio()<<setw(10)<<
i -> RegTalla()<<setw(10)<<"\n";
int main(){
LDE J;
Datos l;
Datos M;
int opc;
char sal;
system ("cls"); Titulos("LSE"); Inicio();// mi propia funcion de mi propia libreria # include
<MMD_Funcs.h>
do{
cout <<"\n\n"<<setw(14)<<" Menu "<<endl;
cout << "\n 1) -- Insertar --"<<endl;
cout << " 2) -- Ordenar --" <<endl;
cout << " 3) -- Modificar --" <<endl;
cout << " 4) -- Eliminar --" <<endl;
cout << " 5) -- Imprimir --" <<endl;
cout << " 6) -- Salir --"<<endl<<endl;
cout << "Seleccione la opcion : ";
cin>>opc;
switch (opc){
case 1:
system ("cls"); Titulos("LSE"); Inicio();//
cout<<"\n INGRESE LOS DATOS DEL CALZADO"<<endl<<endl;
l=LeerDatos();
J.Insertar(l);
getch();
break;
case 2:
system ("cls"); Titulos("LSE"); Inicio();//
cout << " DATOS ORDENADOS "<<endl<<endl;
J.InsOrd(l);
J.Imprimir();
getch();
break;
case 3:
system ("cls"); Titulos("LSE"); Inicio();
J.Imprimir();
cout<<"\n Ingrese el Dato que desea Modificar: " ;
cin>>l.Modelo; fflush(stdin);
J.Buscar(l.Modelo);
J.Modificar();
J.Imprimir();
getch();
break;
case 4:
system ("cls"); Titulos("LSE"); Inicio();
J.Imprimir();
cout<<"\n Ingrese el Dato que desea Eliminar: " ;
cin>>l.Modelo; fflush(stdin);
J.Buscar(l.Modelo);//
J.Eliminar();
J.Imprimir();
break;
case 5:
system ("cls"); Titulos("LSE"); Inicio();//
cout<<" DATOS OBTENIDOS :"<<endl;
J.Imprimir();
getch();
break;
case 6:
exit(6);
break;
default:
cout << "\nIngrese opcion valida";
cout << "\n\nDeseas realizar otra operacion?: S/N ";
cin >> sal;
sal = toupper(sal);
system ("cls"); Titulos("LSE"); Inicio( );
while(sal=='S');
cout << "Proceso terminado. Oprima una tecla...";
getch( );
return 0;