//menu .insertar.eliminar.
salir
#include <iostream>
#include <conio.h>
#include <stdlib.h>
struct nodo{
int dato;//el dato dentro del nodo
nodo *siguiente;//puntero que apunta al siguiente nodo
};
void menu();
void insertar(nodo *&frente, nodo *&fin, int n );
bool vacio(nodo *frente);
void suprimir(nodo *&frente, nodo *&fin, int &n);
void main (){
menu();
getch();
}
void menu(){
int op, dato;
char r;
nodo *frente = NULL;//declara puntero frente de tipo nodo y le asigna vacio
nodo *fin = NULL;//puntero fin vacio
do{
cout<<"\n MENU\n\n";
cout<<" 1. Insertar elementos"<<endl;
cout<<" 2. Mostrar los elementos"<<endl;
cout<<"\ningrese opcion elegida: ";cin>>op;
switch(op){
case 1: do{
cout<<"digite un numero: \n ";cin>>dato;
insertar (frente, fin, dato);
cout<<"\ndesea seguir ingresando elementos a la cola(s/n):
\n";cin>>r;
}while(r=='s');break;
case 2: cout<<"mostrando los elementos\n";
while(frente!= NULL){
suprimir(frente, fin , dato);
if(frente!=NULL)
cout<<dato<<" , ";
else
cout<<dato<<" . ";}
system("pause");
cout<<"FIN DEL PROCESO";break;}
}while(op!= 2);
void insertar (nodo *&frente, nodo *&fin, int n) {
nodo *nuevo_nodo = new nodo();//crea nuevo nodo y reserva su espacio en memoria
//llenando nodo
nuevo_nodo -> dato = n;
nuevo_nodo -> siguiente = NULL;
if (vacio(frente))//el frente y el fin apuntan al primer nodo
{frente = nuevo_nodo;}//la primera vez que se inserte un dato se llena el
frente
else{//hay mas de 1 nodo
fin -> siguiente = nuevo_nodo;//fin apunta al ultimo nodo
}
fin = nuevo_nodo;//fin se le asigna el nuevo nodo
cout<<"elemento insertado correctamente";}
//funcion que determina si la cola esta vacia
bool vacio(nodo *frente){
if(frente == NULL)
return true;
else
return false;}
//funcion eliminar elementos de la cola
void suprimir(nodo *&frente, nodo *&fin, int &n){
n = frente -> dato;//obtener el valor del frente
nodo *aux = frente;//asignamos un puntero que apunta al espacio de memoria donde
esta el frente
if(frente == fin){//solo hay un elemento en la cola
frente = NULL;
fin = NULL;}
else
{frente = frente -> siguiente; }//el frente se pasa al siguiente nodo
delete aux;
}