Pila Y Colas
Enviado por dvannyy • 19 de Noviembre de 2013 • 5.098 Palabras (21 Páginas) • 353 Visitas
pilas
#include <iostream>
using namespace std;
struct nodo{
int nro;
struct nodo *sgte;
};
typedef nodo *ptrPila; // creando nodo tipo puntero( tipo de dato )
/* Apilar elemento
---------------------------------------------------------------------*/
void push( ptrPila &p, int valor )
{
ptrPila aux;
aux = new(struct nodo); // apuntamos al nuevo nodo creado
aux->nro = valor;
aux->sgte = p ;
p = aux ;
}
/* Desapilar elemento(devuelve elemento)
---------------------------------------------------------------------*/
int pop( ptrPila &p )
{
int num ;
ptrPila aux;
aux = p ;
num = aux->nro; // asignamos el primer vamor de la pila
p = aux->sgte ;
free(aux);
return num;
}
/* Muestra elementos de la pila
---------------------------------------------------------------------*/
void mostrar_pila( ptrPila p )
{
ptrPila aux;
aux = p; // apunta al inicio de la lista
while( aux !=NULL )
{
cout<<"\t"<< aux->nro <<endl;
aux = aux->sgte;
}
}
/* Eliminar todos los elementos de la pila
---------------------------------------------------------------------*/
void destruir_pila( ptrPila &p)
{
ptrPila aux;
while( p != NULL)
{
aux = p;
p = aux->sgte;
free(aux);
}
}
/* Menu de opciones
----------------------------------------------------------------------*/
void menu()
{
printf("\n\t PILAS\n\n");
printf(" 1. Apilar\n\n");
printf(" 2. Qitar pila\n\n");
printf(" 3. Ver pila\n\n");
printf(" 4. Eliminar pila\n\n");
printf(" 5. Salir\n\n");
printf("\n Tecle una opcion:\n\n");
}
/* Funcion Principal
----------------------------------------------------------------------*/
int main()
{
ptrPila p = NULL; // creando pila
int dato;
int op;
int x ; // numero que devuelve la funcon pop
system("color 0b");
do
{
menu(); cin>> op;
switch(op)
{
case 1:
printf("\n Numero a apilar: ");
scanf("%d",&dato);
push( p, dato );
printf("\n\n\t\tNumero ", &dato, " apilado...\n\n");
break;
case 2:
x = pop( p );
printf("\n\n\t\tNumero ", &x, " desapilado...\n\n");
break;
case 3:
printf("\n\n Mostrando pila\n\n");
if(p!=NULL)
mostrar_pila( p );
else
printf("\n\n\tPila vacia..!");
break;
case 4:
destruir_pila( p );
printf("\n\n\t\tPila eliminada...\n\n");
break;
}
printf("");
system("pause"); system("cls");
}while(op!=5);
return 0;
}
colas
#include <iostream>
#include <iostream>
#include <stdlib.h>
using namespace std;
/* Estructura de los nodos de la cola
-----------------------------------------------------------------*/
struct nodo
{
int nro;
struct nodo *sgte;
};
/* Estructura de la cola
-----------------------------------------------------------------*/
struct cola
{
nodo *delante;
nodo *atras ;
};
/* Encolar elemento
------------------------------------------------------------------*/
void encolar( struct cola &q, int valor )
{
struct nodo *aux = new(struct nodo);
aux->nro = valor;
aux->sgte = NULL;
if( q.delante == NULL)
q.delante = aux; // encola el primero elemento
else
(q.atras)->sgte = aux;
q.atras = aux; // puntero que siempre apunta al ultimo elemento
}
/* Desencolar elemento
------------------------------------------------------------------*/
int desencolar( struct cola &q )
{
int num ;
struct nodo *aux ;
aux = q.delante; // aux apunta al inicio de la cola
num = aux->nro;
q.delante = (q.delante)->sgte;
free(aux); // libera memoria a donde apuntaba aux
return num;
}
/* Mostrar Cola
-------------------------------------------------------------------*/
void muestraCola( struct cola q )
{
struct nodo *aux;
aux = q.delante;
while( aux != NULL )
{
printf(" %d\n\n ", aux->nro) ;
aux
...