Colas en c++
Enviado por abedoyaf18 • 24 de Octubre de 2020 • Tarea • 2.772 Palabras (12 Páginas) • 124 Visitas
#include <iostream>
#include <stdlib.h>
using namespace std;
struct nodo
{
string dato;
int priori;
struct nodo *sgte;
};
struct cola
{
nodo *delante;
nodo *atras ;
};
struct nodo *crearNodo( string x, int pr)
{
struct nodo *nuevoNodo = new(struct nodo);
nuevoNodo->dato = x;
nuevoNodo->priori = pr;
return nuevoNodo;
};
void encolar( struct cola &q, string valor, int priori )
{
struct nodo *aux = crearNodo(valor, priori);
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
}
void muestraCola( struct cola q )
{
struct nodo *aux;
aux = q.delante;
cout << " Proceso del sistema Priorizados " << endl;
cout << " ------------------- " << endl;
while( aux != NULL )
{
cout<<" "<< aux->dato << " | " << aux->priori << endl;
aux = aux->sgte;
}
}
//prueba
void ordenarPrioridad( struct cola &q )
{
struct nodo *aux1, *aux2;
int p_aux;
string c_aux;
aux1 = q.delante;
while( aux1->sgte != NULL)
{
aux2 = aux1->sgte;
while( aux2 != NULL)
{
if( aux1->priori > aux2->priori )
{
p_aux = aux1->priori;
c_aux = aux1->dato;
aux1->priori = aux2->priori;
aux1->dato = aux2->dato;
aux2->priori = p_aux;
aux2->dato = c_aux;
}
aux2 = aux2->sgte;
}
aux1 = aux1->sgte;
}
}
void insertar( struct cola &q, string c, int pr )
{
/* Encolando caracteres */
encolar( q, c, pr );
/* Ordenando por prioridad */
ordenarPrioridad( q );
}
void menu()
{
cout<<"TRABAJO DE PRIORIDAD EN C++"<<endl;
cout<<endl<<"El procesador tiene 3 hilos de capasidad para hacer procesos simultaneos"<<endl;
cout<<endl<<" 1. Insertar Proceso"<<endl;
cout<<" 2. Imprimir procesos en los hilos"<<endl;
cout<<" 3. SALIR"<<endl;
cout<<endl<<"INGRESE OPCION: ";
}
int dimension( struct cola q )
{
int i = 0;
struct nodo *aux;
aux = q.delante;
while( aux != NULL )
{
i++;
aux = aux->sgte;
}
return i;
}
int main()
{
struct cola cola1;
cola1.delante = NULL;
cola1.atras = NULL;
struct cola cola2;
cola2.delante = NULL;
cola2.atras = NULL;
struct cola cola3;
cola3.delante = NULL;
cola3.atras = NULL;
string c ; // Nombre del proceso
int pr; // prioridad del programa
int op; // opcion del menu
int x ; // numero que devuelve la funcon pop
do
{
menu();
cin>> op;
switch(op)
{
case 1:
if(q.delante==NULL || cola2.delante==NULL || cola3.delante==NULL)
{
if(q.delante==NULL)
{
cout<< "Ingrese Nombre del proceso: ";
cin>> c;
cout<< "Ingrese prioridad: ";
cin>> pr;
insertar( cola1, c, pr );
cout<<endl;
cout<<"El Programa que se ingreso es: " <<c<<endl;
}else
{
if(cola2.delante==NULL)
{
cout<< "Ingrese Nombre del proceso: ";
cin>> c;
cout<< " Ingrese prioridad: ";
cin>> pr;
insertar( cola2, c, pr );
cout<<endl<<endl;
cout<<"El Programa que se ingreso es: " <<c<<endl;
}else
{
if(cola3.delante==NULL)
{
cout<< "Ingrese Nombre del proceso: ";
cin>> c;
cout<< "Ingrese prioridad: ";
cin>> pr;
insertar( cola3, c, pr );
cout<<"El Programa que se ingreso es: " <<c<<endl;
}
}
}
}else
{
...