Алгоритмическое мышление при решении задач (на примере языка C#). Шамшев А.Б - 93 стр.

UptoLike

Составители: 

93
Задача 19: До минимального элемента списка вставить среднее
арифметическое всех элементов.
Рассуждения:
1. Надо создать список с методами добавления (пусть в голову), печати.
Эти задачи уже рассматривались ранее.
2. Так же для решения этой задачи необходимо найти среднее
арифметическое элементов списка. Для этого надо сумму всех
элементов разделить на их количество. А
для этого нужно найти сумму
всех элементов и их количество. А для этого надо объявить сумму всех
элементов и их количество.
Если количество элементов равно 0 (т. е. список пуст), то надо
выкинуть исключение. Ловить его будем в главной программе.
Что бы пройти по всем элементам, мы должны идти от головы
до конца
списка включительно, т. е. пока текущий элемент существует.
В виде кодов реализация довольно проста:
public double getMiddle() {
int count = 0;
double sum = 0;
for (ListNode temp = head; temp != null; temp = temp.next) {
sum += temp.data;
count++;
}
if (count == 0) {
throw new ApplicationException("Список пуст");
}
return sum / count;
}
3. Теперь надо найти минимальный элемент, что бы до него вставить
данные. А для этого надо пройтись по всему списку. В целом алгоритм
поиска идентичен поиску в массиве. Приведем реализацию данного
алгоритма:
public int getMin() {
if (head == null) {
throw new ApplicationException("Список пуст");
}
int min = head.data;
for (ListNode temp = head.next; temp != null; temp =
temp.next) {
if (temp.data < min) {
min = temp.data;
}
}
return min;
}
4. Теперь осталось вставить среднее арифметическое (вернее округление
от него, потому что в списке мы храним целые числа) перед