ClubEnsayos.com - Ensayos de Calidad, Tareas y Monografias
Buscar

Colas en c++


Enviado por   •  24 de Octubre de 2020  •  Tareas  •  2.772 Palabras (12 Páginas)  •  104 Visitas

Página 1 de 12

#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

{

...

Descargar como (para miembros actualizados) txt (9 Kb) pdf (43 Kb) docx (13 Kb)
Leer 11 páginas más »
Disponible sólo en Clubensayos.com