Я пытаюсь понять, как найти и удалить максимальное число в списке. (Мне не разрешено использовать Dictionary, List, LinkedList, SortedList и подобные).
Список чисел преобразуется в массив {1055, 2, 29, 8, 7, 2000, 29, 8, 22, 6, 29,} "s" - это список.
Я могу найти самый высокий номер в списке, и мне кажется, что код для его удаления также правильный, но проблема в том, как он работает в моей голове: 1-й l oop, чтобы найти максимальное число:
int tmp = 0;
while (s != null)
{
if(tmp < s.data)
{
tmp = s.data;
}
s = s.next;
}
Console.WriteLine(tmp);
return null;
Это правильно вернет мне 2000.
И 2-й l oop должен в основном перейти к следующему число, поэтому самый высокий не отображается.
while (s != null)
{
if (s.data == tmp)
{
s = s.next;
}
Console.Write(s.data + " ");
s = s.next;
}
Я пытался поиграть с петлями, но не могу понять, как объединить их вместе, чтобы заставить его работать.
Спасибо за любые совет. Я открыт для другого подхода.
Добавление всего соответствующего кода в дело
class Seznam
{
public int data;
public Seznam next;
public Seznam prev;
static void Main(string[] args)
{
int[] pole = { 1055, 2, 29, 8, 7, 2000, 29, 8, 22, 6, 29, };
Seznam s = convertArray(pole); //This is the list
s = DeleteMax(s);
Console.ReadLine();
}
static Seznam DeleteMax(Seznam s)
{
int tmp = 0;
while (s != null)
{
if(tmp < s.data)
{
tmp = s.data;
}
s = s.next;
}
Console.WriteLine(tmp);
return null;
}
}