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

Слайд 2

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

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

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

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

Постановка задачи Входные данные Даны количество шариков в цепочке (не более

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

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

цвета шариков (от 0 до 9, каждому цвету соответствует свое целое число).
Выходные данные
Требуется вывести количество шариков, которое будет уничтожено.
Слайд 4

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

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

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

удаления элемента из списка
Слайд 5

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

Алгоритм

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

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

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

Пример

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

2 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

0 7 7 3 3 3 7 7 1

0 7 7 7 7 1

0 1

10

Слайд 8

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

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

Слайд 9

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

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

Слайд 10

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

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

Слайд 11

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

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