DEV Community

Leo
Leo

Posted on

SO

so.hpp

#ifndef so_hpp
#define so_hpp

#include <iostream>
#include <assert.h>

class process {

    class node {

  char _id;
  int _time;
  int _priority;
  node *_next;

  public:

    node(char i, int t, int q);

  char id() const { return _id; } //cual es el id
  int tme() const { return _time; } //cual es el tiempo
  int prty() const { return _priority; } //cual es la prioridad
  node *next() const { return _next; } // cual es el siguiente apuntador
  void next(node *p) { _next = p; } // cambia el siguiente ap
  };

  int n; // Capacity of process
  int s; // Size of process

  node *head; // First item in queue
  node *tail; // Last item in queue

public:

  process(int);
  ~process();

  void push(int);
  int pop(void);

  int capacity() const { return n; }
  int size() const { return s; }

  bool full() const { return s==n; }
  bool empty() const { return s==0; }

  void print();
};

#endif /* so_hpp */
Enter fullscreen mode Exit fullscreen mode

so.cpp

#include "so.hpp"

  process::node::node(char i, int t, int q) {
      _id = i;
      _time = t;
      _priority = q;
      _next = nullptr;
  }

  process::process(int c){

      n = c;
      s = 0;
      head = nullptr;
      tail = nullptr;
  }

  process::~process(){

      while(head != nullptr) {

          node *p = head;
          head = head -> next();
          delete p;
      }
  }

  void process::push(char i, int t, int q){

      assert(!full());
    node *p = new node(i, t, q);
    if(empty()) {
        head = p;
        tail = p;
      }else{
        tail -> next(p);
        tail = p;
    }
    s++;
  }

  int process::pop(){

      assert(!empty());
          char i = head -> id();
          int t = head -> tme();
          int q = head -> prty();

          node *p = head;
          head = p -> next(); 
          delete p;
          s--;
          return x;
  }

  void process::print(){

      node *p = head;
      std::cout<<"[ ";
      while(p != nullptr){
      std::cout << p -> data() << " ";
      p = p -> next();
      }
  std::cout << "]" << std::endl;
}



Enter fullscreen mode Exit fullscreen mode

Top comments (0)