listas con apuntadores dinámicos

3
/*Programa de listas con apuntadores dinámicos M. I. Blanca Elia Jiménez Guzmán Noviembre de 2013*/ #include <iostream> #include <conio.h> #include <stdlib.h> #include <ctype.h> using namespace std; void push(void); void pop(void); void recorrido(void); void busqueda(void); int buscar(int dato); void menu(void); void tecla(void); struct ficha { int num; struct ficha *sig; } *aux1,*aux2,*nvo,*pri; int e=0, numero; int main() { system("cls"); aux1=NULL; aux2=NULL; pri=NULL; menu(); return 0; } void menu(void) { char op='1'; while (op!='5') { system("cls"); cout <<"\nMenu para listas dinamicas"<<endl; cout <<"1.- Insertar"<<endl; cout <<"2.- Eliminar"<<endl; cout <<"3.- Buscar"<<endl; cout <<"4.- Recorrido"<<endl; cout <<"5.- Salir"<<endl; cout <<"Selecciona una opcion ";op=getche(); system("cls"); switch (op) { case '1': push(); break; case '2': pop(); break; case '3': busqueda(); break; case '4': recorrido(); break; } } }

Upload: blanca-elia-jimenez-guzman

Post on 24-Jul-2015

65 views

Category:

Education


1 download

TRANSCRIPT

Page 1: Listas con apuntadores dinámicos

/*Programa de listas con apuntadores dinámicos

M. I. Blanca Elia Jiménez Guzmán

Noviembre de 2013*/

#include <iostream>

#include <conio.h>

#include <stdlib.h>

#include <ctype.h>

using namespace std;

void push(void);

void pop(void);

void recorrido(void);

void busqueda(void);

int buscar(int dato);

void menu(void);

void tecla(void);

struct ficha

{

int num;

struct ficha *sig;

} *aux1,*aux2,*nvo,*pri;

int e=0, numero;

int main()

{

system("cls");

aux1=NULL;

aux2=NULL;

pri=NULL;

menu();

return 0;

}

void menu(void)

{

char op='1';

while (op!='5')

{

system("cls");

cout <<"\nMenu para listas dinamicas"<<endl;

cout <<"1.- Insertar"<<endl;

cout <<"2.- Eliminar"<<endl;

cout <<"3.- Buscar"<<endl;

cout <<"4.- Recorrido"<<endl;

cout <<"5.- Salir"<<endl;

cout <<"Selecciona una opcion ";op=getche();

system("cls");

switch (op)

{

case '1': push();

break;

case '2': pop();

break;

case '3': busqueda();

break;

case '4': recorrido();

break;

}

}

}

Page 2: Listas con apuntadores dinámicos

void push(void)

{

nvo=new ficha;

cout <<"\nNumero: ";

cin>>nvo->num;

nvo->sig=NULL;

if(pri==NULL)

pri=nvo;

else

{

e=buscar(nvo->num);

if(e==1)

cout<<"Dato repetido";

else

{

if(nvo->num<aux1->num && aux1==pri)

{

nvo->sig=pri;

pri=nvo;

}

else if(aux1->sig==NULL && nvo->num > aux1->num)

aux1->sig=nvo;

else

{

aux2->sig=nvo;

nvo->sig=aux1;

}

}

}

tecla();

}

void pop(void)

{

char seg;

if(pri==NULL)

cout<<"\nLista vacia"<<endl;

else

{

cout <<"\nNumero a borrar: ";

cin>>numero;

e=buscar(numero);

if(e==1)

{

cout<<"Dato a borrar: "<<aux1->num<<" ¿Estas seguro [s/n]? ";

seg=tolower(getche());

if (seg=='s')

{

if(aux1==pri)

pri=aux1->sig;

else

aux2->sig=aux1->sig;

delete aux1;

cout<<"\nDato borrado";

}

}

else

cout<<"Dato no encontrado"<<endl;

}

tecla();

}

Page 3: Listas con apuntadores dinámicos

void recorrido(void)

{

if (pri==NULL)

cout <<"\nLista vacia";

else

{

aux1=pri;

while (aux1!=NULL)

{

cout<<aux1->num<<" --> ";

aux1=aux1->sig;

}

}

tecla();

}

void busqueda(void)

{

if(pri==NULL)

cout<<"\nLista vacia"<<endl;

else

{

cout <<"\nNumero a buscar: ";

cin>>numero;

e=buscar(numero);

if(e==1)

{

cout<<"\nDato encontrado";

cout<<"\nNumero: "<<aux1->num;

}

else

cout<<"\nDato no encontrado"<<endl;

}

tecla();

}

int buscar(int dato)

{

int encuentra=0;

aux1=pri;

while(aux1->num<dato && aux1->sig!=NULL)

{

aux2=aux1;

aux1=aux1->sig;

}

if(aux1->num==dato)

encuentra=1;

return (encuentra);

}

void tecla(void)

{

cout<<"\nPresiona una tecla para continuar"<<endl;

getch();

}