Индивидуальная работа Линейные списки

Слайд 2

Постановка задачи

В одной компьютерной игре игрок выставляет в линию шарики разных цветов.

Постановка задачи В одной компьютерной игре игрок выставляет в линию шарики разных
Когда образуется непрерывная цепочка из трех и более шариков одного цвета, она удаляется из линии. Все шарики при этом сдвигаются друг к другу, и ситуация может повториться.
Напишите программу, которая по данной ситуации определяет, сколько шариков будет сейчас уничтожено. Естественно, непрерывных цепочек из трех и более одноцветных шаров в начальный момент может быть не более одной.

Слайд 3

Постановка задачи

Входные данные
Даны количество шариков в цепочке (не более 10^5) и цвета

Постановка задачи Входные данные Даны количество шариков в цепочке (не более 10^5)
шариков (от 0 до 9, каждому цвету соответствует свое целое число).
Выходные данные
Требуется вывести количество шариков, которое будет уничтожено.

Слайд 4

Что необходимо для решения задачи?

Двунаправленный линейный список
Функция добавления элемента в список
Функция удаления

Что необходимо для решения задачи? Двунаправленный линейный список Функция добавления элемента в
элемента из списка

Слайд 5

Алгоритм

Запоминаем текущий цвет в переменной
Двигаемся по списку и считаем, сколько шариков этого

Алгоритм Запоминаем текущий цвет в переменной Двигаемся по списку и считаем, сколько
цвета идет подряд
Если подряд идет 3 и более шариков одного цвета, уходим в начало цепочки одноцветных шариков, а затем удаляем их
Действия выполняются до тех пор, пока список не закончится

Слайд 6

Пример

Допустим, нам дана последовательность из 12 шариков:
0 7 7 3 2 2

Пример Допустим, нам дана последовательность из 12 шариков: 0 7 7 3
2 3 3 7 7 1

Слайд 7

0 7 7 3 2 2 2 3 3 7 7

0 7 7 3 2 2 2 3 3 7 7 1
1

0 7 7 3 3 3 7 7 1

0 7 7 7 7 1

0 1

10

Слайд 8

Тестирование

Тестирование

Слайд 9

Тестирование

Тестирование

Слайд 10

Тестирование

Тестирование

Слайд 11

Тестирование

Тестирование