На языке С# Создать базовый класс «список» с виртуальными функциями вставки и извлечения. Реализовать на базе списка производные классы стека и очереди.

ДЕСПАСИТТО58 ДЕСПАСИТТО58    1   13.02.2021 11:09    25

Ответы
Vzinko42 Vzinko42  13.02.2021 11:10

На языке С#

Создать базовый класс «список» с виртуальными функциями вставки и извлечения. Реализовать на базе списка производные классы стека и очереди,красный.

ПОКАЗАТЬ ОТВЕТЫ
vladyulin vladyulin  18.01.2024 19:04
Хорошо, давайте начнем с создания базового класса "список" на языке C#:

```csharp
public class Список
{
protected List элементы; // список элементов

public Список()
{
элементы = new List();
}

public virtual void Вставка(int элемент)
{
элементы.Add(элемент);
}

public virtual int Извлечение()
{
if (элементы.Count == 0)
{
throw new InvalidOperationException("Список пуст");
}

int элемент = элементы[0];
элементы.RemoveAt(0);
return элемент;
}
}
```

Здесь мы создали класс "Список" с защищенным полем "элементы" типа List, которое будет хранить элементы списка. Инициализируем его в конструкторе "Список()".

В классе "Список" определены две виртуальные функции: "Вставка()" и "Извлечение()". "Вставка()" добавляет заданный элемент в конец списка с помощью метода Add(). "Извлечение()" извлекает первый элемент из списка с помощью индексации элементов и метода RemoveAt() по индексу 0.

Теперь давайте реализуем производные классы "Стек" и "Очередь" на базе класса "Список":

```csharp
public class Стек : Список
{
public override void Вставка(int элемент)
{
элементы.Insert(0, элемент);
}

public override int Извлечение()
{
if (элементы.Count == 0)
{
throw new InvalidOperationException("Стек пуст");
}

int элемент = элементы[0];
элементы.RemoveAt(0);
return элемент;
}
}

public class Очередь : Список
{
public override void Вставка(int элемент)
{
элементы.Add(элемент);
}

public override int Извлечение()
{
if (элементы.Count == 0)
{
throw new InvalidOperationException("Очередь пуста");
}

int элемент = элементы[0];
элементы.RemoveAt(0);
return элемент;
}
}
```

В классе "Стек" переопределены методы "Вставка()" и "Извлечение()". В "Вставка()" элемент добавляется в начало списка с помощью метода Insert(). В "Извлечение()" мы также используем индексацию и метод RemoveAt() для извлечения элемента из начала списка.

В классе "Очередь" также переопределены методы "Вставка()" и "Извлечение()". Здесь элемент добавляется в конец списка с помощью метода Add(), а извлекается из начала списка так же, как и в классе "Список".

Надеюсь, это поможет вам понять, как создать базовый класс "Список" и производные классы "Стек" и "Очередь". Если у вас есть еще вопросы, пожалуйста, задавайте!
ПОКАЗАТЬ ОТВЕТЫ
Другие вопросы по теме Информатика