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

UptoLike

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

97
}
int middle = (int)Math.Round(getMiddle());
int min = getMin();
if (head.data == min) {
ListNode temp = new ListNode(middle, null);
temp.next = head;
head = temp;
} else {
ListNode prevNode = head;
for (; prevNode.next != null; prevNode = prevNode.next) {
if (prevNode.next.data == min) {
break;
}
}
//логика вставки нового элемента
}
}
Логику вставки легко реализовать, глядя на рисунки промежуточных
шагов во второй ситуации:
ListNode temp = new ListNode(middle, null);
temp.next = prevNode.next;
prevNode.next = temp;
Приведем полный код реализации обработки списка:
public void process() {
if (head == null) {
throw new ApplicationException("Список пуст");
}
int middle = (int)Math.Round(getMiddle());
int min = getMin();
if (head.data == min) {
ListNode temp = new ListNode(middle, null);
temp.next = head;
head = temp;
} else {
ListNode prevNode = head;
for (; prevNode.next != null; prevNode = prevNode.next) {
if (prevNode.next.data == min) {
break;
}
}
ListNode temp = new ListNode(middle, null);
temp.next = prevNode.next;
prevNode.next = temp;
}
}
Очевидно, что ее можно немного оптимизировать:
public void process() {
if (head == null) {
throw new ApplicationException("Список пуст");
}
int middle = (int)Math.Round(getMiddle());