Baixe o app para aproveitar ainda mais
Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original
#include <stdio.h> #include <stdlib.h> #include <string.h> #define NUM_FILA 3 #define TAM_NOME 50 typedef enum {false,true} bool; // estrutura de um processo typedef struct no { float tamanho; char nome[TAM_NOME]; int prioridade; struct no *prox; } noProcesso; //fila de processos a serem executados na CPU noProcesso *filaDeProcessos[NUM_FILA]; //vetor que indica a existencia de pelo menos um processo dessa bool prioridade bool prioridadesProcessos[10]; void inicializaFila() { int i; for(i=0; i<3; i++) { filaDeProcessos[i] = NULL; } } void inicializaVetorPrioridades() { int j = 0; for(j=0; j<10; j++) { prioridadesProcessos[j] = false; } } void insereFilainsereFila(float tam, char nome[TAM_NOME], int prio) { noProcesso *atual = NULL; noProcesso *novo = (noProcesso *)malloc(sizeof(noProcesso)); novo -> tamanho = tam; strcpy(novo -> nome, nome); novo -> prioridade = prio; if((prio<=3)&&(prio>=0)) { if(filaDeProcessos[0]=NULL) { filaDeProcessos[0] = novo; novo -> prox = NULL; return true; } else { while(atual -> prox != NULL) { atual = atual -> prox; } atual -> prox = novo; novo -> prox = NULL; return true; } } else { if((prio<=6)&&(prio>=4)) { if(filaDeProcessos[1]==NULL) { filaDeProcessos[1]=novo; novo -> prox = NULL; return true; } else { if((prio=9)&&(prio>=7)) { if(filaDeProcessos[2]=NULL) { filaDeProcessos[2]=novo; novo -> prox = NULL; return true; } else { atual = filaDeProcessos[2]; while(atual -> prox!=NULL) { atual = atual -> prox; } atual -> prox = novo; novo -> prox = NULL; return true; } } } } } return false; } void imprimeDadoslistaDeProcessos() { int i = 0; noProcesso *atual = NULL; for (i= 0 ; i <3; i++) { atual = filaDeProcessos[i]; while(atual != NULL) { printf(">>> Numero:%d\n", i+1); printf(">>> Nome:%s\n", atual -> nome); printf(">>> Tamanho: %f\n", atual ->tamanho); printf(">>> Prioridade: %i\n",atual->prioridade); atual = atual->prox; i++; } } } bool removePrimeirodaFila(int indice) { noProcesso *aux = NULL; if(filaDeProcessos[indice]== NULL) { printf(">>>Indice %d está vazio!", indice); } else { aux = filaDeProcessos[indice]; filaDeProcessos[indice] = filaDeProcessos[indice] -> prox; free (aux); return true; } return false; } int main () { inicializaFila(); inicializaVetorPrioridades(); insereFilainsereFila(1, "BrOfficeCalc", 3); insereFilainsereFila(2.3, "CodeBlocks", 9); insereFilainsereFila(0.5, "Calculadora",1); insereFilainsereFila(6.4, "Firefox", 7); insereFilainsereFila(3.1, "PhpMyAdmin", 2); insereFilainsereFila(2.9, "Kile", 4); insereFilainsereFila(4.5, "Gimp", 9); insereFilainsereFila(5.5, "BrOfficeWriter",6); insereFilainsereFila(5.8, "GCC", 2); imprimeDadoslistaDeProcessos(); removePrimeirodaFila(2); imprimeDadoslistaDeProcessos(); return 0; }
Compartilhar