SoFunction
Updated on 2025-03-07

C# code examples that implement sequential queues and chain queues

andImplementation of the previous stackBasically, it's a way of thinking:

Don't say much nonsense, just write the code

//Custom queue interfacenamespace queue
{
  interface IQueue<T>
  {
    int Count { get; }
    int GetLength();
    bool IsEmpty();
    void Clear();
    void Enqueue(T item);
    T Dequeue();
    T Peek();
  }
}
//Sequential queue implementation classnamespace queue
{
  class SeqQueue<T> : IQueue<T>
  {
    private T[] data;
    private int count; //Indicate how many elements are currently there    private int front; //Team Head (Team Head Index-1)    private int rear;  //Termine (Termine element index)    public SeqQueue(int size)
    {
      data = new T[size];
      count = 0;
      front = -1;
      rear = -1;
    }
    public SeqQueue()
    {
      data = new T[10];
      count = 0;
      front = -1;
      rear = -1;
    }
    public int Count
    {
      get
      {
        return count;
      }
    }
    public void Clear()
    {
      count = 0;
      front = -1;
      rear = -1;
    }
    public T Dequeue()
    {
      if(count > 0)
      {
        T temp = data[front + 1];
        front++;
        count--;
        return temp;
      }
      else
      {
        ("There is no data in the queue, and the head of the team cannot be obtained");
        return default(T);
      }
    }
    public void Enqueue(T item)
    {
      if (count == )
      {
        ("Quote element is full, cannot be added");
      }
      else
      {
        if (rear ==  -1) //Is there a value in the last position        {
          data[0] = item;
          rear = 0;
          count++;
        }
        else
        {
          data[rear + 1] = item;
          rear += 1;
          count++;
        }
      }
    }
    public int GetLength()
    {
      return count;
    }
    public bool IsEmpty()
    {
      return count == 0;
    }
    public T Peek()
    {
      T temp = data[front + 1];
      return temp;
    }
  }
}
//The node class of the chain queuenamespace queue
{
  class Node<T> {
    private T data;
    private Node<T> next;
    public Node(T data)
    {
       = data;
    }
    public T Data
    {
      get { return data; }
      set { data = value; }
    }
    public Node<T> Next
    {
      get { return next; }
      set { next = value; }
    }
  }
}
//Chain queue implementation classnamespace queue
{
  class LinkQueue<T> : IQueue<T>
  {
    private Node<T> front; //Head node    private Node<T> rear; //The end point    private int count; //Denote the number of elements    public LinkQueue()
    {
      front = null;
      rear = null;
      count = 0;
    }
    public int Count
    {
      get
      {
        return count;
      }
    }
    public void Clear()
    {
      front = null;
      rear = null;
      count = 0;
    }
    public T Dequeue()
    {
      if (count == 0)
      {
        ("Quote is empty");
        return default(T);
      }else if(count == 1)
      {
        T temp = ;
        front = rear = null;
        count = 0;
        return temp;
      }
      else
      {
        T temp = ;
        front = ;
        count--;
        return temp;
      }
    }
    public void Enqueue(T item)
    {
      Node<T> newNode = new Node<T>(item);
      if (count == 0)
      {
        front = newNode;
        rear = newNode;
        count = 1;
      }
      else
      {
         = newNode;
        rear = newNode;
        count++;
      }
    }
    public int GetLength()
    {
      return count;
    }
    public bool IsEmpty()
    {
      return count == 0;
    }
    public T Peek()
    {
      if (front != null)
      {
        return ;
      }
      else
      {
        return default(T);
      }
    }
  }
}
//The above two implementation classes test classesnamespace queue
{
  class Program
  {
    static void Main(string[] args)
    {
      // Queue in CRL      //Queue<int> queue = new Queue<int>();
      //The order of writing of your own      //SeqQueue<int> queue = new SeqQueue<int>();
      //Own chain queue      LinkQueue<int> queue = new LinkQueue<int>();
      (12);
      (34);
      (56);
      (78);
      (90);
      ("Size after adding five elements:"+ );
      int i = ();  //Departure (take out and delete)      ("The elements taken out are: " + i);
      ("Quantity size after dequeue:" + );
      int j = ();
      ("The elements that Peek takes out are: " + j);
      ("Fourthquad size after PeeK:" + );
      ();
      ("Clear queue size:" + );
      ();
    }
  }
}

Summarize

The above is the entire content of this article. I hope that the content of this article has certain reference value for your study or work. Thank you for your support. If you want to know more about it, please see the following links