Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- namespace d1
- {
- // Клас за представяне на опашка
- public class Queue<T>
- {
- // Поле за съхранение на елементите на опашката в масив
- private T[] items;
- // Поле за съхранение на индекса на началото на опашката
- private int front;
- // Поле за съхранение на индекса на края на опашката
- private int rear;
- // Конструктор с параметър за капацитета на опашката
- public Queue(int capacity)
- {
- // Създаваме нов масив с посочения капацитет
- items = new T[capacity];
- // Инициализираме началото и края на опашката с -1, което означава, че опашката е празна
- front = -1;
- rear = -1;
- }
- // Метод за проверка дали опашката е празна
- public bool IsEmpty()
- {
- // Опашката е празна, ако началото и краят са -1
- return front == -1 && rear == -1;
- }
- // Метод за проверка дали опашката е пълна
- public bool IsFull()
- {
- // Опашката е пълна, ако краят е равен на дължината на масива минус 1
- return rear == items.Length - 1;
- }
- // Метод за добавяне на елемент в опашката
- public void Enqueue(T item)
- {
- // Проверяваме дали опашката е пълна
- if (IsFull())
- {
- // Ако е пълна, хвърляме изключение
- throw new InvalidOperationException("Опашката е пълна.");
- }
- if (IsEmpty()) // Ако опашката е празна
- {
- front = 0; // Задаваме началото на 0
- }
- rear++; // Увеличаваме края с 1
- items[rear] = item; // Записваме елемента на тази позиция в масива
- }
- // Метод за премахване на елемент от опашката
- public T Dequeue()
- {
- // Проверяваме дали опашката е празна
- if (IsEmpty())
- {
- // Ако е празна, хвърляме изключение
- throw new InvalidOperationException("Опашката е празна.");
- }
- // Запазваме елемента в началото на опашката в променлива
- T item = items[front];
- if (front == rear) // Ако има само един елемент в опашката
- {
- front = -1; // Задаваме началото и края на -1, което означава, че опашката става празна
- rear = -1;
- }
- else // Ако има повече от един елемент в опашката
- {
- front++; // Увеличаваме началото с 1
- }
- // Връщаме запазения елемент като резултат от метода
- return item;
- }
- // Метод за връщане на елемента в началото на опашката без да го премахваме
- public T Peek()
- {
- // Проверяваме дали опашката е празна
- if (IsEmpty())
- {
- // Ако е празна, хвърляме изключение
- throw new InvalidOperationException("Опашката е празна.");
- }
- // Връщаме елемента в началото на опашката като резултат от метода
- return items[front];
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement