Задание
Исходными данными являются данные, вводимы пользователем. Данные описывают некоторую сущность, например, персону (фамилия, возраст, пол), книгу (название, автор, количество страницы, понравилась или нет) и т.п. Придумайте сами, какие сущности вы будете описывать. Приведенные выше в примерах использовать запрещается. Требования к данным – элемент, содержащий данные, обязательно должен включать в себя данные типа int, string и bool. Какое из них считается ключевым полем (ключом) - на выбор студента.
Разработать класс MyList, реализующий организацию данных в виде связного списка и обеспечивающего следующую функциональность:
- включение нового элемента в начало списка;
- включение нового элемента в конец списка;
- поиск элемента с заданным значением ключа;
- включение нового элемента в упорядоченный список без нарушения его упорядоченности;
- удаление элемента из упорядоченного списка;
- визуализацию текущего состояния списка.
Разработать главную программу обеспечивающую:
- ввод с программного интерфейса конкретных значений данных;
- создание элемента, хранящего введенные пользователем значения данных;
- выполнения с этими данными перечисленных выше операций.
Пользовательский интерфейс
Примерный пользовательский интерфейс содержит следующие компоненты (в контексте выше приведенного примера содержимого элемента):
- Текстбоксы (и соответствующие подписи их) для ввода фамилии, возраста и пола.
- Кнопка "Создать объект", по нажатию которой создается объект с данными, введенными в выше указанные текстбоксы.
- Кнопка "В начало", по нажатию которой созданный объект с данными помещается в начало списка.
- Листбокс для вывода содержимого списка.
- Кнопка "Визуализировать", по нажатию которой содержимое списка выводится в листбокс.
- Кнопка "В конец", по нажатию которой созданный объект с данными помещается в конец списка.
- Кнопка "Упорядоченно", по нажатию которой созданный объект с данными помещается в упорядоченный список, не нарушая его упорядоченности.
- Текстбокс для ввода значения ключа для операций поиска и удаления.
- Кнопка "Найти" для выполнения поиска элемента по заданному ключу и вывода его содержимого.
- Кнопка "Удалить" по нажатию которой элемент с заданным значение ключа удаляется из списка .
Содержание отчета к программе

Итого отчет к программе и постановка задачи на 7 страницах
Фрагмент программного кода
using System;
using System.Collections.Generic;
using System.Text;
using System.Windows.Forms;
namespace MyList
{
// елемент списка
class MyList
{
// Указатель на начало списка
MyListLink first = null;
// Ссылка на последний элемент
MyListLink last = null;
// добавление в конец
public void Prepend(MyData guitar)
{
MyListLink newMyListLink = new MyListLink(guitar);
// если начальный пуст - заполним его
if (this.first == null)
{
newMyListLink.prev = null;
this.first = newMyListLink;
return;
}
// добавим в конец
MyListLink lastMyListLink = GetLastLink(this);
lastMyListLink.next = newMyListLink;
newMyListLink.prev = lastMyListLink;
}
// Вывод списка
public void Visual(ListBox textbox, MyList Links)
{
// берем первый из списка
MyListLink current = Links.first;
do
{
// заполняем коллекцию
textbox.Items.Add(current.data.Brand + ", "+ current.data.Model + ", "+ current.data.Amount + ", "+ current.data.Avail);
current = current.next;
// пока не кончаться жлементы
} while (current != null);
}
// добавляем в начало
public void Append(MyData guitar)
{
MyListLink newMyListLink = new MyListLink(guitar);
newMyListLink.next = this.first;
newMyListLink.prev = null;
if (this.first != null)
{
this.first.prev = newMyListLink;
}
this.first = newMyListLink;
}
// Получение последнего элемента списка
private MyListLink GetLastLink(MyList List)
{
MyListLink temp = List.first;
while (temp.next != null)
{
temp = temp.next;
}
return temp;
}
// Добавляет элемент на указанную позицию
public void InsertAfter(int position, MyData guitar)
{
Скриншот архива с проектом

Пояснения по запуску программы
.NET Core 3.1 WinForms
Телеграм
-