Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Болтушкин Л.С., 712-2, задание 1

.docx
Скачиваний:
0
Добавлен:
23.11.2024
Размер:
19.78 Кб
Скачать

Болтушкин Леонид Станиславович, группа 712-2

Разработка алгоритмов «Списки»

Алгоритмы вставки и удаления элемента в односвязный список

Односвязный список представляет собой набор элементов, каждый из которых содержит данные и указатель на следующий элемент в списке. Алгоритмы вставки и удаления элемента в конец, начало и середину списка будут описаны с использованием следующих дескрипторов:

- Имя списка (идентификатор): L

- Тип элементов списка: целые числа

- Указатель начала списка: head

- Указатель текущего элемента списка: current

Алгоритмы вставки элемента в односвязный список

1. Вставка в начало списка (`L`):

Исходные данные: Односвязный список L, новый элемент E (целое число).

Процесс:

1. Создать новый узел N, содержащий элемент E.

2. Установить указатель next узла N на текущий начальный узел списка head.

3. Изменить указатель начала списка head, чтобы он указывал на новый узел N.

Результат: Новый элемент E вставлен в начало списка L.

2. Вставка в середину списка (`L`) на определенную позицию `P`:

Исходные данные: Односвязный список L, новый элемент E (целое число), позиция P (натуральное число).

Процесс:

1. Создать новый узел N, содержащий элемент E.

2. Если P = 0, выполнить вставку в начало списка.

3. Установить указатель current на начальный узел списка head.

4. Пройти по списку до узла, находящегося на позиции P - 1.

5. Установить указатель next нового узла N на следующий узел после узла current.

6. Изменить указатель next узла current, чтобы он указывал на новый узел N.

Результат: Новый элемент E вставлен в середину списка L на позицию P.

3. Вставка в конец списка (`L`):

Исходные данные: Односвязный список L, новый элемент E (целое число).

Процесс:

1. Создать новый узел N, содержащий элемент E.

2. Если список пуст (указатель head равен None), установить указатель начала списка head на новый узел N.

3. Установить указатель current на начальный узел списка head.

4. Пройти по списку до последнего узла, у которого указатель next равен None.

5. Установить указатель next последнего узла на новый узел N.

Результат: Новый элемент E вставлен в конец списка L.

Алгоритмы удаления элемента из односвязного списка

1. Удаление из начала списка (`L`):

Исходные данные: Односвязный список L.

Процесс:

1. Если список пуст (указатель head равен None), завершить выполнение.

2. Установить указатель начала списка head на следующий узел после текущего начального узла.

Результат: Первый элемент удален из списка L.

2. Удаление из середины списка (`L`) на определенной позиции `P`:

Исходные данные: Односвязный список L, позиция P (натуральное число).

Процесс:

1. Если список пуст или P меньше 0, завершить выполнение.

2. Если P = 0, выполнить удаление из начала списка.

3. Установить указатель current на начальный узел списка head.

4. Пройти по списку до узла, находящегося на позиции P - 1.

5. Изменить указатель next узла current, чтобы он указывал на узел, следующий за узлом на позиции P.

Результат: Элемент на позиции P удален из списка L.

3. Удаление из конца списка (`L`):

Исходные данные: Односвязный список L.

Процесс:

1. Если список пуст (указатель head равен None), завершить выполнение.

2. Установить указатель current на начальный узел списка head.

3. Пройти по списку до предпоследнего узла (узла, для которого next.next равен None).

4. Установить указатель next предпоследнего узла на None.

Результат: Последний элемент удален из списка L.