using System.Collections;
public bool Status {get; set;}
public uint Start {get; init;}
public uint Final {get; set; }
public Node Next { get; set; }
public class LinkedList {
public enum FitAlgorithm {
private Node lastFreeNode, firstNode;
private void LinkNodes(Node n1, Node n2) {
public void Assign(uint process, FitAlgorithm fitAlgorithm) {
UseFirstFitAlgorithm(process);
UseBestFitAlgorithm(process);
UseWorstFitAlgorithm(process);
UseNextFitAlgorith(process);
private void UseFirstFitAlgorithm(uint process) {
Node current = firstNode.Next;
while(current is not null) {
ContiguousFreePartitions(current);
if(!current.Status && process <= (current.Final - current.Start + 1)) {
if((current.Final - current.Start + 1 - process) != 0) {
Start = current.Start + process,
current.Final = current.Start + process - 1;
frag.Next = current.Next;
private void ContiguousFreePartitions (Node current) {
while(!current.Status && !piv.Status)
current.Final = piv.Next.Final;
current.Next = piv.Next.Next;
private void UseBestFitAlgorithm(uint process) {
private void UseWorstFitAlgorithm(uint process) {
private void UseNextFitAlgorith(uint process) {
public static void Main()