You are on page 1of 5

/*

listas enlazadas
*/

#include <iostream>
#include <stdlib.h>
using namespace std;

struct nodo{ // contruyo mi elemento


int nro; // en este caso es un numero entero
struct nodo *sgte; // este es el puntero q va a crear a
null
};

typedef struct nodo *Tlista; //nuevo elemento,


int cantidad=0;
int cantidad2=0;
/////////////aaaaaaaaaaaaaaaaaa

void push( Tlista &p, int valor ) {


Tlista q;
q=new(struct nodo);
q->nro=valor;
q->sgte=p;
p=q;
}

void mostrar(Tlista p){ //primero


int i=1;
while(p!=NULL){
cout<<i<<" ["<<p->nro<<"] "<<endl;

p=p->sgte;
i++;
}
}
/*
void mostrarPaquete(ptrPila t){ //segundo
int i=1;
while(t!=NULL){
cout<<i<<" ["<<t->nro<<"] "<<endl;

t=t->sgte;
i++;
}
}*/

int pop(Tlista &p){


int num;
Tlista aux;
aux=p;
num=aux->nro;
p=aux->sgte;
delete(aux);

return num;
}
///////////////////aaaaaaaaaaaaa

void reportarLista(Tlista lista)


{
int i = 0;

while(lista != NULL)
{
cout <<' '<< i+1 <<") " << lista->nro << endl;
lista = lista->sgte;
i++;
}
cout<<"cantidad="<<cantidad<<"\n";
}

void insertarFinal(Tlista &lista, int valor)


{
Tlista t, q = new(struct nodo);

q->nro = valor;
q->sgte = NULL;

if(lista==NULL) //pregunto si la lista esta vacia


{
lista = q; // si esta vaca, le asigno
}
else
{
t = lista;
while(t->sgte!=NULL)
{
t = t->sgte;
}
t->sgte = q;

void eliminarElemento(Tlista &lista, int pos)


{
Tlista p, ant;
p = lista;
int contador=1;
if(lista!=NULL)
{
while(p!=NULL)
{
if(pos==contador)
{
if(p==lista)
lista = lista->sgte;
else
ant->sgte = p->sgte;

delete(p);
return;
}
ant = p;
p = p->sgte;
contador++;
}

}
else
cout<<" Lista vacia..!";
}

void menu1()
{
cout<<"\n\t\tLISTA ENLAZADA \n\t\t \n\n";
cout<<" 1. ENVASAR "<<endl;
cout<<" 2. DISTRIBUIR "<<endl;
cout<<" 3. Vaciar pila de distribucion
"<<endl;
cout<<" 3. SALIR "<<endl;

cout<<"\n INGRESE OPCION: ";


}

/* Funcion Principal
-----------------------------------------------------------------
----*/

int main()
{
Tlista lista = NULL; //tipo de dato: TLISTA,
VARIABLE: lista
Tlista lista2 = NULL;
int op; // opcion del menu
int _dato; // elemenento a ingresar
int pos; // posicion a insertar
int ultimo;
int limite=5;
bool primero=true;
bool lleno=false;;
system("color 0c");

do
{
menu1(); cin>> op;
switch(op)
{

case 1:

cout<< "\n ENVASANDO....: "; cin>> _dato;


//insertarFinal(lista, _dato);
if(limite>cantidad){
push(lista,_dato);
ultimo=_dato;
primero=false;
cantidad++;

}
else{
cout<<"Error la pila de envasado
esta lleno\n";
}
//reportarLista(lista);
mostrar(lista);
break;

case 2:

cout<< "\n Distribuyendo....: ";


//insertarFinal(lista, _dato);
if(limite>cantidad2 &&
cantidad<=limite && cantidad>0){
int dato=pop(lista);
push(lista2,dato);
cantidad--;
cantidad2++;

cout<<"Pila De Envasado\n\n";
mostrar(lista);
cout<<"\n";
cout<<"Pila de Distribucion\n\n";
mostrar(lista2);
}
else if(cantidad==0){
cout<<"No hay elementos en la
pila de envasado para poder distribuir\n";
}
else{
cout<<"Error la pila de
distribucin ya esta llena\n";
}
//reportarLista(lista);

break;

case 3:
cout<<"Eliminando pila de distribucion\n";
for(int i=0;i<cantidad2;i++){
pop(lista2);
}
mostrar(lista2);
cantidad2=0;
break;
case 4:
break;
default:
cout<<"Error opcion no reconocida\n";
}

cout<<endl<<endl;
system("pause"); system("cls");

}while(op!=4);

system("pause");
return 0;
}

You might also like