Вот мой код:
sing System;
namespace LB1
{
class Elem
{
public string Value;
public Elem Next;
//Конструктор
public Elem(string value)
{
Value = value;
}
}
class Program
{
static Elem _head;
static Elem _current;
static void Main()
{
string value = "";
while (true)
{
Console.WriteLine("" +
"0-Просмотр всего списка\n" +
"1-Вставка элемента справа относительно текущего\n" +
"2-Поиск элемента\n" +
"3-Удаление элемента\n" +
"4-Очистка списка\n" +
"5-По варианту: поиск максимального элемента\n" +
"6-Выйти из приложения");
int choice = int.Parse(Console.ReadLine());
switch (choice)
{
case 0:
PrintList();
break;
case 1:
InputElem();
break;
case 2:
Console.Write("Введите значение, которое хотите найти: ");
value = Console.ReadLine();
FindElem(value);
break;
case 3:
Console.Write("Введите значение, которое хотите удалить: ");
value = Console.ReadLine();
DeleteElem(value);
break;
case 4:
ListClear();
break;
case 5:
PrintMaxElem();
break;
case 6:
break;
default:
Console.WriteLine("Такой команды нет");
break;
}
if (choice == 6) break;
}
}
/// <summary>
/// Просмотр всего списка
/// </summary>
static void PrintList()
{
if (_head == null)
{
Console.WriteLine("Список пуст");
return;
}
else
{
_current = _head;
int count = 1;
while (_current != null)
{
Console.WriteLine($"{count}){_current.Value}");
_current = _current.Next;
count++;
}
}
}
static void InputElem()
{
Console.Write("Введите значение нового элемента: ");
string value = Console.ReadLine();
Add(new Elem(value));
}
/// <summary>
/// Вставка элемента справа относительно текущего
/// </summary>
/// <param name="elem">Элемент</param>
static void Add(Elem elem)
{
if (_head == null)
{
_head = elem;
}
else
{
_current = _head;
while (_current.Next != null)
{
_current = _current.Next;
}
_current.Next = elem;
}
}
/// <summary>
/// Поиска элемента в списке
/// </summary>
/// <param name="value">значение</param>
static void FindElem(string value)
{
if (_head == null)
{
Console.WriteLine("Список пуст");
return;
}
bool isFound = false;
_current = _head;
while (_current.Next != null)
{
if (_current.Value == value)
{
isFound = true;
break;
}
_current = _current.Next;
}
if (isFound) Console.WriteLine($"Элемент со значением \"{value}\" был найден!");
else Console.WriteLine($"Элемент со значением \"{value}\" не найден! ");
}
/// <summary>
/// Удаления элемента из списка
/// </summary>
/// <param name="value">Значение элемента</param>
static void DeleteElem(string value)
{
if (_head == null)
{
Console.WriteLine("Список пуст");
return;
}
_current = _head;
while (_current.Next.Value != value)
{
_current = _current.Next;
if (_current.Next == null) break;
}
if (_current.Next.Next != null)
_current.Next = _current.Next.Next;
else
_current.Next = null;
}
/// <summary>
/// очистки списка
/// </summary>
static void ListClear()
{
_head = null;
_current = null;
}
/* Метод по заданию:
Поиск максимального элемента списка.*/
/// <summary>
/// Поиск максимального элемента
/// </summary>
static void PrintMaxElem()
{
Elem max = _head;
if (_head == null)
{
Console.WriteLine("Список пуст");
return;
}
_current = _head;
while (_current.Next != null)
{
if(_current.Value >= max)
{
max = _current.Value;
}
_current = _current.Next;
}
Console.WriteLine($"Максимальный элемент={value}");
}
}
}
}
Постоянно выдаёт ошибки в конце. Не могу никак сообразить насчёт максимального элемента в списке.Не подскажите?