Ir al contenido principal

Programación en c++: Cola - Dividir Cola





1.- Dividir elementos ingresado en dos colas

#include<iostream.h>
#include<conio>
void inicializa(struct cola &);
void encola(struct cola &, int);
void verCola(struct cola);
void vaciaCola(struct cola &);
int desencola(struct cola &);

struct nodo{
int nro;
struct nodo * sgte;
};

struct cola{
struct nodo * delante;// apunta al primero
struct nodo * atras;// apunta al ultimo
};

void DividirCola(cola q,cola &cola1,cola &cola2)
{
nodo *p=q.delante;
   int cont,i;
   for(cont=0;p!=NULL;cont++)
   {
    p=p->sgte;
   }
   p=q.delante;
   cont=cont/2;
   for(i=0;p!=NULL;i++,p=p->sgte)
   {
    if(i<cont)
      {
      encola(cola1,p->nro);
      }
      else
      {
      encola(cola2,p->nro);
      }
   }
}


void main(void)
{
int opc;
struct cola q,cola1,cola2;
int n;
inicializa(q);
inicializa(cola1);
inicializa(cola2);
do{ cout<<endl<<"******MENU********"<<endl;
cout<<"[1] Ingresa Elementos"<<endl;
cout<<"[2] Retirar Elementos"<<endl;
cout<<"[3] Dividir y Visualiza cola"<<endl;
cout<<"[4] Vaciar Cola"<<endl;
cout<<"[5] Salir"<<endl;
cout<<"Ingrese Opcion";
cin>>opc;
switch(opc)
{
case 1: cout<<"Ingresar Elementos:";
cin>>n;
encola(q,n);
break;
case 2: if(q.delante!=NULL)
{n=desencola(q);
cout<<endl<<"Desencola elementos"<<n<<endl;}
else
cout<<endl<<"No hay elementos en la cola"<<endl;
break;
case 3:
    DividirCola(q,cola1,cola2);
    cout<<endl<<"Elementos de la cola:"<<endl;
verCola(q);
         cout<<"ELEMENTOS DE LA COLA 1\n";
         verCola(cola1);
         cout<<"ELEMENTOS DE LA COLA 2\n";
         verCola(cola2);
         getch();
break;
case 4: vaciaCola(q);
break;
}
   clrscr();
}while(opc!=5);
}

//funciones---------------------------
void inicializa(struct cola &q)
{q.delante=NULL;//apunta al primer elemento
 q.atras=NULL; //apunta al ultimo elemento
}

//INGRESA ELEMENTOS EN LA COLA
void encola(struct cola &q, int n)
{
struct nodo *p;
p=new (struct nodo);
p->nro=n;
p->sgte=NULL;
if(q.delante==NULL)
q.delante=p; //ingresa el primer elemento
else
(q.atras)->sgte=p;// si no apunta a un nuevo nodo
q.atras=p;// la cola apunta al ultimo elemento recientemente ingresado
}


//ELIMINA ELEMENTOS EN LA COLA

int desencola(struct cola &q)
{
struct nodo *p;
p=q.delante;// apunta al primer elemento
int n=p->nro;
q.delante=(q.delante)->sgte;
delete(p);
return n;
}



//BORRA LOS DATOS DE LA COLA
void vaciaCola(struct cola &q)
{
struct nodo *p,*r;
p=q.delante;// apunta al primer elemento
while(p!=NULL)
{
r=p;
p=p->sgte;
delete(r);
}
q.delante=NULL;
q.atras=NULL;

}

void verCola(struct cola q)
{
struct nodo *p;
p=q.delante;// apunta al primer elementos
while(p!=NULL)
{
cout<<p->nro<<endl;
p=p->sgte;
}

}

Comentarios

Entradas más populares de este blog

Lenguaje de Programacion en Java: Ecuación de primer grado

public class Main {     public static void main(String[] args) {         float x,a,e;                   Scanner teclado = new Scanner(System.in);         System.out.println("Coeficiente de X:");         x=teclado.nextInt();         System.out.println("Término independiente:");         a=teclado.nextInt();         if(a==0)           System.out.println("No es una ecuación de primer grado");           else         {              e=-a/x;              System.out.println("La raíz es=" +e);         }                                     } ...

Programacion: Arbol binario - Programacion en c++

1.- Hacer un programa que permita buscar un elemento, el elemento mayor, el elemento menor y el menor de los mayores de un árbol binario. #include <iostream.h> #include <conio.h> struct nodo     {      int valor;      struct nodo* izq;      struct nodo* der;     }; typedef struct nodo *ABB; void inserta(ABB& ,int); void preorden(ABB); void postorden(ABB); void enorden(ABB); void verarbol(ABB,int); int buscar(ABB,int); int buscarmayor(ABB); int buscarmenor(ABB); void podar(ABB&,int); void main() { ABB arbol=NULL; ABB subarbol=NULL; int n,x,opc,a;   do     {      cout<<"menu principal"<<endl;      cout<<"1.ingresar elementos"<<endl;      cout<<"2.pre orden"<<endl;      cout<<"3.mostrar hojas"<...

Programacion: Arreglos con estructuras - ordenamientos

1.- Se pide realizar un ordenamiento de artículos, para ello se debe ingresar n artículos y ordenarlos por su monto de inversión. struct articulo {char codigo[10];  char producto[20];  float preciocompra;  float monto;  int cantidad;  }  #include<iostream.h> #include<string.h> #include<conio.h> #define MAX 50 struct articulo {char codigo[10];  char producto[20];  float preciocompra;  float monto;  int cantidad;  };  void leer(int, struct articulo[]);  void montodeinversion(int, struct articulo[]);  void ordenmonto(int, struct articulo[]);  void listado(int, struct articulo[]);  void main()  {int n;   struct articulo Art[MAX];   cout<<"Cantidad de articulos que desea poner:";   cin>>n;   leer(n,Art);   montodeinversion(n,Art);   ordenmonto(n,Art);   cout<<"productos ordenados por su cantidad de mont...