Вы находитесь на странице: 1из 8

//lipo

#include<iostream>
#include<conio.h>
#include<string.h>
using namespace std;
class nodo{
int dato;
nodo *siguiente;
public:
nodo(int d=0,nodo *s=NULL){
dato=d;
siguiente=s;
}
friend class pila;
};
class pila{
nodo *top;
public:
pila(){
top=NULL;
}
void push(int);
int pop();
~pila();
};
void pila::push(int v){
nodo *aux;
aux=new nodo(v,top);
top=aux;
}
int pila::pop(){
nodo *aux;
int sacar;
if(top==NULL){
cout<<"ERROR";
return 0;
}
aux=top;
top=top->siguiente;
sacar=aux->dato;
delete aux;
return sacar;
}
pila::~pila(){
while(top)
pop();
}
int main(){

pila miPila;
int x;
do{
cout<<"\t\tMenu Pila"<<endl<<endl
<<"1.-Push"<<endl
<<"2.-Pop"<<endl
<<"3.-Salir"<<endl<<endl
<<"\tQue opcion desea?";
cin>>x;
switch(x){
case 1:
cout<<"Dato: ";
cin>>x;
miPila.push(x);
cout<<"Metido :D";
break;
case 2:
x=miPila.pop();
cout<<"Dato:"<<x;
break;
case 3:
return 0;
default:
cout<<"No valida";
}
}while(1);
}

//fifo
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <iostream.h>
#include <conio.h>
using namespace std;
class nodo{
int valor;
nodo *siguiente;
public:
nodo(int v=0,nodo *sig=NULL){
valor=v;
siguiente=sig;
}
friend class fifo;
};
class fifo{
nodo *ultimo;
nodo *primero;
public:
fifo(){
ultimo=NULL;
primero=NULL;
}
void introducir(int);
int sacar();
~fifo();
};
void fifo::introducir(int v){
nodo *nuevo;
nuevo=new nodo(v);
if(ultimo)
ultimo->siguiente=nuevo;
ultimo=nuevo;
if(!primero)
primero=nuevo;
}
int fifo::sacar(){
nodo *aux;
int v;
aux=primero;
if(!aux){
cout<<"FIFO VACIA"<<endl;
return 0;
}
primero=aux->siguiente;

v=aux->valor;
delete aux;
if(!primero)
ultimo=NULL;
return v;
}
fifo::~fifo(){
while(primero)
sacar();
}
int main(){
fifo cola;
int x;
do{
cout<<"\t\tMenu cola"<<endl<<endl
<<"1.-Introducir"<<endl
<<"2.-Sacar"<<endl
<<"3.-Salir"<<endl<<endl
<<"\tQue opcion desea?";
cin>>x;
switch(x){
case 1:
cout<<"Dato: ";
cin>>x;
cola.introducir(x);
cout<<"Metido :D";
break;
case 2:
x=cola.sacar();
cout<<"Dato:"<<x;
break;
case 3:
return 0;
default:
cout<<"No valida";
}
}while(1);

//ordenada
#include<iostream>
#include<conio.h>
#include<string.h>
using namespace std;
class nodo{
char nombre [30];
int edad;
float estatura;
nodo *siguiente;
public:
nodo (char*,int,float,nodo*);
friend class lista;
};
nodo::nodo(char *N=" ",int ed=0,float
est=0,nodo *s=NULL){
strcpy(nombre,N);
edad=ed;
estatura=est;
siguiente=s;
}
class lista{
nodo *inicio;
public:
lista ( );
void insertar ( );
void recorrer ( );
void borrar ( );
void modificar ( );
bool buscar ( );
~lista ( );
};
lista::lista(){
inicio=NULL;
}

void lista::insertar(){
nodo *Aux=inicio;
int x;
char dato [30];
int edad;
float est;
cout<<"Que dato va a contener el
nodo?"<<endl
<<"Nombre: ";
fflush(stdin);
gets(dato);
cout<<"Edad: ";
cin>>edad;
cout<<"Estatura: ";
cin>>est;
if(!inicio){

inicio=new nodo(dato,edad,est,
inicio);
}
else{
if(strcmp(inicio>nombre,dato)>0){
inicio=new
nodo(dato,edad,est, inicio);
}
else{
while((Aux>siguiente!=NULL) && strcmp(Aux>siguiente->nombre,dato)<0){
Aux=Aux->siguiente;
}
Aux->siguiente=new
nodo(dato,edad,est, Aux->siguiente);
}
}
system("cls");
}
void lista::recorrer(){
nodo *aux;
aux=inicio;
while(aux){
puts(aux->nombre);
cout<<aux->edad<<" aos, "
<<aux->estatura<<" metros ";
cout<<"->"<<endl;
aux=aux->siguiente;
}
cout<<NULL<<endl;
getch();
system("cls");
}
void lista::borrar(){
nodo *aux=inicio;
nodo *anterior=inicio;
char dato[30];
int x;
cout<<"Nodo a borrar? ";
fflush(stdin);
gets(dato);
if(inicio==NULL){
cout<<"Lista vacia"<<endl;
return;
}
x=strcmp(dato,inicio->nombre);
if(x==0){
inicio=inicio->siguiente;
delete aux;
return;
}
aux=aux->siguiente;
while(aux){

x=strcmp(dato,aux->nombre);
if(x==0){
anterior>siguiente=aux->siguiente;
delete aux;
return;
}
aux=aux->siguiente;
anterior=anterior->siguiente;
}
cout<<"Dato no encontrado";
system("cls");
system("PAUSE");
}
void lista::modificar ( ){
char dato[30];
int edad;
float est;
int x;
cout <<"Dato a modificar: ";
fflush(stdin);
gets(dato);
nodo *aux=inicio;
while(aux){
x=strcmp(dato,aux->nombre);
if(x==0){
cout<<"Nuevo
nombre: ";
fflush(stdin);
gets(dato);
cout<<"Nueva edad:
";
cin>>edad;
cout<<"Nueva
estatura: ";
cin>>est;
strcpy (aux->nombre,dato);
aux->edad=edad;
aux->estatura=est;
return;
}
aux=aux->siguiente;
}
cout<<"Dato no existe";
system("cls");
}
bool lista::buscar(){
fflush(stdin);
char dato[30];
cout<<"A quien busca? ";
gets(dato);
nodo *aux=inicio;
int x;
while(aux){
x=strcmp(dato,aux->nombre);
if(x==0)

return true;
aux=aux->siguiente;
}
return false;
system("cls");
}
lista::~lista(){
nodo *aux=inicio;
while(aux){
inicio=aux-> siguiente;
delete aux;
aux = inicio;
}
}
main(){
lista A;
int opcion;
do{
cout<<"Elige una opcion: "<<endl<<endl
<<"\t1) Insertar"<<endl
<<"\t2) Borrar"<<endl
<<"\t3) Recorrer"<<endl
<<"\t4) Buscar"<<endl
<<"\t5) Modificar"<<endl
<<"\t6) Salir"<<endl;
cin>>opcion;
switch(opcion){
case 1:
A.insertar();
break;
case 2:
A.borrar();
break;
case 3:
A.recorrer();
break;
case 4:
if(A.buscar()==1)
cout<<"Si existe"<<endl;
else
cout<<"No existe"<<endl;
break;
case 5:
A.modificar();
break;
case 6:
break;
}
}while(opcion!=6);
getch();
return 0;
}

//circular
#include<iostream>
#include<conio.h>
#include<string.h>
using namespace std;
class nodo{
char dato[25];
int edad;
float estatura;
nodo *siguiente;
public:
nodo(char *v=" ",int ed=0,float
est=0,nodo *sig=NULL){
strcpy(dato,v);
edad=ed;
estatura=est;
siguiente=sig;
}
friend class lista;
};
typedef nodo *pnodo;
class lista{
pnodo actual;
public:
lista(){
actual=NULL;
}
~lista();
void insertar(char *v,int edad,float est);
void borrar(char *v);
bool listaVacia(){
return actual==NULL;
}
void mostrar();
char *valorActual(pnodo aux){
return aux->dato;
}
};
void lista::insertar(char *v,int edad,float est){
pnodo aux;
aux=new nodo(v,edad,est);
if(actual==NULL)
actual=aux;
else
aux->siguiente=actual->siguiente;
actual->siguiente=aux;
}
void lista::mostrar(){
pnodo aux=actual;
if(listaVacia()){
cout<<"Lista vacia";
return;
}
do{
cout<<"->";

puts(valorActual(aux));
cout<<aux->edad<<" aos, "
<<aux->estatura<<" metros ";
cout<<"->"<<endl;
aux=aux->siguiente;
}while(aux!=actual);
cout<<endl;
}
void lista::borrar(char *v){
pnodo aux;
aux=actual;
do{
if(strcmp(actual->siguiente->dato,v)!=0)
if(actual)
actual=actual->siguiente;
}while(strcmp(actual->siguiente>dato,v)!=0 && actual!=aux);
if(strcmp(actual->siguiente->dato,v)==0){
if(actual==actual->siguiente){
delete actual;
actual=NULL;
}
else{
aux=actual->siguiente;
actual->siguiente=aux->siguiente;
delete aux;
}
}
}
lista::~lista(){
pnodo aux;
while(actual->siguiente!=actual){
aux=actual->siguiente;
actual->siguiente=aux->siguiente;
delete aux;
}
delete actual;
}
main(){
lista A;
int edad,x;
float est;
char dato[30];
int opcion;
do{
cout<<"Elige una opcion: "<<endl<<endl
<<"\t1) Insertar"<<endl
<<"\t2) Borrar"<<endl
<<"\t3) Mostrar"<<endl
//<<"\t4) Buscar"<<endl
//<<"\t5) Modificar"<<endl
<<"\t4) Salir"<<endl;
cin>>opcion;
switch(opcion){
case 1:

cout<<"Que dato va a contener el


nodo?"<<endl
<<"Nombre: ";
fflush(stdin);
gets(dato);
cout<<"Edad: ";
cin>>edad;
cout<<"Estatura: ";
cin>>est;
A.insertar(dato,edad,est);
break;
case 2:
cout<<"Nodo a borrar? ";
fflush(stdin);
gets(dato);
A.borrar(dato);
break;
case 3:
A.mostrar();
break;
/*case 4:
if(A.buscar()==1)
cout<<"Si existe"<<endl;
else
cout<<"No existe"<<endl;
break;
case 5:
A.modificar();
break;*/
case 6:
break;
}
}while(opcion!=6);
getch();
return 0;
}

//doblemente enlazada
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <iostream.h>
#include <conio.h>
#define ASCENDENTE 1
#define DESCENDENTE 0
using namespace std;
class Nodo{
public:
Nodo (int v=0, char *nombre="", int
edad=0, float estatura=0, Nodo*sig=NULL,
Nodo *ant=NULL):valor(v), ed(edad),
esta(estatura),
siguiente(sig),anterior(ant){strcpy(N,
nombre);}
private:
int valor;
char N[25];
int ed;
float esta;
Nodo *siguiente;
Nodo *anterior;
friend class Lista;
};
typedef Nodo *pnodo;
class Lista{
public:
Lista():plista(NULL){}
~Lista();
void Insertar(int v, char
*nombre, int edad, float estatura);
void Borrar(int v);
bool ListaVacia(){
return plista==NULL;
}
void Mostrar(int);
void Siguiente();
void Anterior ();
void Primero ();
void Ultimo ();
bool Actual (){
return plista!=NULL;
}
int ValorActual(){
return plista->valor;
}
private:
pnodo plista;
};
void Lista::Insertar(int v, char *nombre, int
edad, float estatura){
pnodo nuevo;
Primero();

if(ListaVacia()||plista->valor>v){
nuevo = new Nodo(v,
nombre, edad, estatura, plista, NULL);
if(!plista)
plista=nuevo;
else
plista->anterior=nuevo;
}
else{
while(plista>siguiente&&plista->siguiente->valor<=v)
Siguiente();
nuevo=new Nodo (v, nombre,
edad, estatura, plista->siguiente,plista);
plista->siguiente=nuevo;
if(nuevo->siguiente)
nuevo->siguiente->anterior=nuevo;
}
}
Lista::~Lista(){
pnodo aux;
Primero();
while(plista){
aux=plista;
plista=plista->siguiente;
delete aux;
}
}
void Lista::Borrar(int v){
pnodo nodo;
nodo=plista;
while(nodo&&nodo->valor<v)
nodo=nodo->siguiente;
while(nodo&&nodo->valor>v)
nodo=nodo->anterior;
if(!nodo||nodo->valor!=v){
cout<<"No existe"<<endl;
return;
}
if(nodo==plista){
if(nodo->anterior)
plista=nodo->anterior;
else
plista=nodo->siguiente;
}
if(nodo->anterior)
nodo->anterior->siguiente=nodo>siguiente;
if(nodo->siguiente)
nodo->siguiente->anterior=nodo>anterior;
delete nodo;
}
void Lista::Mostrar(int orden){
pnodo nodo;
if(orden==ASCENDENTE){

Primero();
nodo=plista;
while(nodo){
cout<<nodo>valor<<"->";
puts(nodo->N);
cout<<"Edad"<<nodo->ed<<endl;
cout<<"Estatura"<<nodo>esta<<endl;
nodo=nodo>siguiente;
}
}
if(orden==DESCENDENTE){
Ultimo();
nodo=plista;
while(nodo){
cout<<nodo->valor<<"->";
puts(nodo->N);
cout<<"Edad"<<nodo>ed<<endl;
cout<<"Estatura"<<nodo>esta<<endl;
nodo=nodo->anterior;
}
}
cout<<endl;
}
void Lista::Siguiente(){
//if(plista)
plista=plista->siguiente;
}
void Lista::Anterior(){
if(plista)
plista=plista->anterior;
}
void Lista::Primero(){
while(plista&&plista->anterior)
plista=plista->anterior;
}
void Lista::Ultimo(){
while(plista&&plista->siguiente)
plista=plista->siguiente;
}
int main (){
int opc;
Lista persona;
int dato, dato3, numm, mostrar_pers;
char dato2[25];
float dato4;
do{
system("cls");
cout<<"Elige una opcion: "<<endl<<endl
<<"\t1) Insertar"<<endl

<<"\t2) Recorrer"<<endl
<<"\t3) Borrar"<<endl
<<"\t4) Salir"<<endl;
cin>>opc;
switch(opc){
case 1:
cout<<"Que dato va a contener el
nodo?"<<endl;
cout <<"Numero de lista: ";
cin >> dato;
fflush(stdin);
cout <<"Nombre: ";
gets(dato2);
cout <<"Edad: ";
cin >> dato3;
cout <<"Estatura: ";
cin >> dato4;
persona.Insertar(dato, dato2, dato3,
dato4);
break;
case 2:
cout << "ASCENDENTE = 1"
<< endl;
cout << "DESCENDENTE = 0"
<< "\n\n";
/*cout << "Opcion: ";*/
cin >> mostrar_pers;
persona.Mostrar(mostrar_pers);
break;
case 3:
cout << "Nodo desea borrar?:
";
cin >> numm;
persona.Borrar(numm);
break;
case 4:
exit(0);
}
getch();
}while(opc<=4);
}

Вам также может понравиться