DEV Community

Leo
Leo

Posted on • Edited on

Copia

void process::Prioridad() {
    // Hacer una copia de la cola original
    node* originalQueue = nullptr;
    node* tail = nullptr;
    node* p = head;
    while (p != nullptr) {
        node* newNode = new node(p->id(), p->tme(), p->prty());
        if (originalQueue == nullptr) {
            originalQueue = newNode;
            tail = newNode;
        } else {
            tail->next(newNode);
            tail = newNode;
        }
        p = p->next();
    }

    // Ordenar la copia por prioridad
    node* sortedCopy = nullptr;
    while (originalQueue != nullptr) {
        node* maxNode = originalQueue;
        node* prevMaxNode = nullptr;
        node* current = originalQueue->next();
        node* prev = originalQueue;
        while (current != nullptr) {
            if (current->prty() > maxNode->prty()) {
                maxNode = current;
                prevMaxNode = prev;
            }
            prev = current;
            current = current->next();
        }
        // Sacar el nodo máximo de la lista original
        if (prevMaxNode != nullptr) {
            prevMaxNode->next(maxNode->next());
        } else {
            originalQueue = maxNode->next();
        }
        // Insertar el nodo máximo al principio de la lista ordenada
        maxNode->next(sortedCopy);
        sortedCopy = maxNode;
    }

    // Procesar y mostrar la cola ordenada
    // Aquí deberías colocar el código de procesamiento y salida
    // Asegúrate de trabajar con la lista ordenada (sortedCopy)

    // Liberar la memoria ocupada por la copia de la cola original y la lista ordenada
    while (originalQueue != nullptr) {
        node* temp = originalQueue;
        originalQueue = originalQueue->next();
        delete temp;
    }
    while (sortedCopy != nullptr) {
        node* temp = sortedCopy;
        sortedCopy = sortedCopy->next();
        delete temp;
    }
}
Enter fullscreen mode Exit fullscreen mode

Otra kpia

#include <iostream>
#include <iomanip>

using namespace std;

// Suponiendo que tienes una clase llamada 'node' que representa un nodo en la lista enlazada

void process::FIFO() {
    cout << "\n\tPlanificacion de procesos - Sistemas Operativos";
    cout << "\n\n\tFIFO (Primera Entrada, Primera Salida)\n" << endl;

    // Copiar la lista original a una nueva lista
    node *copy_head = nullptr;
    node *copy_tail = nullptr;
    node *p = head;
    while (p != nullptr) {
        // Crear un nuevo nodo con los mismos datos que el nodo original
        node *new_node = new node(p->id(), p->tme());

        // Agregar el nuevo nodo a la lista copiada
        if (copy_head == nullptr) {
            copy_head = new_node;
            copy_tail = new_node;
        } else {
            copy_tail->set_next(new_node);
            copy_tail = new_node;
        }

        p = p->next();
    }

    float tR = 0, tRT = 0;
    cout << "\n\tId //" << " Tiempo de ejecucion //" << " Tiempo de retorno //"<< " Procesos restantes (ID Tiempo)" << endl;
    p = copy_head;
    while (p != nullptr) {
        tR += p->tme();
        tRT += tR;
        cout << "\t"<< p->id() << "\t\t"<< p->tme()<< "\t\t"<< tR<< "\t\t";

        // Mostrar los procesos restantes en la lista copiada
        node *t = p->next();
        while(t != nullptr){
            cout << " | " << t->id() << " " << t->tme() << " | ";
            t = t->next();
        }
        cout << endl;

        p = p->next();
    }

    // Liberar la memoria asignada para la lista copiada
    p = copy_head;
    while (p != nullptr) {
        node *temp = p;
        p = p->next();
        delete temp;
    }

    cout << "\n\tTiempo promedio: "<< fixed << setprecision(2) << (float)tRT/n << endl;
}
Enter fullscreen mode Exit fullscreen mode

AWS Security LIVE!

Tune in for AWS Security LIVE!

Join AWS Security LIVE! for expert insights and actionable tips to protect your organization and keep security teams prepared.

Learn More

Top comments (0)

A Workflow Copilot. Tailored to You.

Pieces.app image

Our desktop app, with its intelligent copilot, streamlines coding by generating snippets, extracting code from screenshots, and accelerating problem-solving.

Read the docs