Министерство образования и науки Российской федерации Федеральное агентство по образованию Государственное образовательн...
12 downloads
159 Views
175KB Size
Report
This content was uploaded by our users and we assume good faith they have the permission to share this book. If you own the copyright to this book and it is wrongfully on our website, we offer a simple DMCA procedure to remove your content from our site. Start by pressing the button below!
Report copyright / DMCA form
Министерство образования и науки Российской федерации Федеральное агентство по образованию Государственное образовательное учреждение высшего профессионального образования «РОСТОВСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ»
МЕТОДИЧЕСКИЕ УКАЗАНИЯ для студентов 2 курса вечернего отделения механико-математического факультета по курсу
ЯЗЫКИ ПРОГРАММИРОВАНИЯ И МЕТОДЫ ТРАСЛЯЦИИ ЗАДАНИЯ ПО УЧЕБНОЙ ПРАКТИКЕ
Ростов-на-Дону 2006
Методические указания разработаны сотрудниками кафедры прикладной математики и программирования: доцентом Я.М. Русановой, старшим преподавателем Н.И. Амелиной, старшим преподавателем Л.Г. Пасечным
Ответственный редактор
ст. преподаватель Н.И. Амелина
Компьютерный набор и верстка
ст. лаборанта И.В. Евдокимовой
Печатается в соответствии с решение кафедры прикладной математики и программирования механико-математического факультета РГУ, протокол №4 от 29 декабря 2005 г.
2
СОДЕРЖАНИЕ ТЕМА 1. ЛИНЕЙНЫЕ ОДНОСВЯЗНЫЕ СПИСКИ . . . . . . . . . . . . . . . . . . .
4
Задание 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4
Задание 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6
Задание 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
8
Задание 4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
9
ТЕМА 2. ДВУСВЯЗНЫЕ ЛИНЕЙНЫЕ СПИСКИ . . . . . . . . . . . . . . . . . . . . .
11
Задание 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 Задание 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 ТЕМА 3. ДВОИЧНЫЕ ДЕРЕВЬЯ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
13
Задание 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 Задание 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 Задание 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 Задание 4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 ЛИТЕРАТУРА . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
3
ТЕМА 1. ЛИНЕЙНЫЕ ОДНОСВЯЗНЫЕ СПИСКИ Читая целые числа из текстового файла, создать линейный односвязный список а) добавлением нового элемента в начало списка; б) добавление нового элемента в конец списка. Задание 1 Описать процедуру добавления одного или нескольких элементов в список. 1) Добавить новый элемент после элемента с заданным значением. 2) Добавить новый элемент перед элементом с заданным значением. 3) Добавить новый элемент после каждого элемента с заданным значением. 4) Добавить новый элемент перед каждым элементом с заданным значением. 5) Продублировать все нулевые элементы. 6) Продублировать первый нулевой элемент. 7) Продублировать все положительные элементы. 8) Продублировать первый положительный элемент. 9) Продублировать все отрицательные элементы. 10)
Продублировать первый отрицательный элемент.
11)
Продублировать все нечетные элементы.
12)
Продублировать первый нечетный элемент.
13)
Продублировать все четные элементы.
14)
Продублировать первый четный элемент.
15)
Продублировать все элементы с заданным значением.
16)
Продублировать первый элемент с заданным значением.
17)
Продублировать все элементы со значением, большим заданного.
4
18)
Продублировать первый элемент со значением, большим заданного.
19)
Продублировать все элементы со значением, меньшим заданного.
20)
Продублировать первый элемент со значением, меньшим заданного.
21)
Добавить в начало списка заданное количество элементов.
22)
Добавить в конец списка заданное количество элементов.
23)
Добавить перед последним элементом списка заданное количество
элементов. 24)
Добавить после первого элемента списка заданное количество
элементов. 25)
Добавить после первого элемента списка с заданным значением
заданное количество элементов. 26)
Добавить перед первым элементом списка с заданным значением
заданное количество элементов. 27)
Добавить в начало списка заданное количество k элементов, не
меняя порядка их следования: первый из заданных элементов, второй, K , k-ый элемент, список.
28)
Добавить в конец списка заданное количество k элементов, не меняя
порядка их следования: список, первый из заданных элементов, второй, K , k-ый элемент. 29)
Добавить
в
список,
элементы
которого
упорядочены
по
неубыванию, новый элемент так, чтобы сохранить упорядоченность. 30)
Добавить
в
список,
элементы
которого
упорядочены
по
невозрастанию, новый элемент так, чтобы сохранить упорядоченность. 31)
Добавить в конец списка все элементы другого списка.
32)
Добавить в начало списка все элементы другого списка.
33)
Добавить в список за первым вхождением заданного элемента все
элементы другого списка. 34)
Добавить перед последним элементом списка все элементы другого
списка. 5
Задание 2 Описать процедуру удаления одного или нескольких элементов списка. 1) Удалить из списка все положительные элементы. 2) Удалить из списка первый положительный элемент. 3) Удалить из списка все отрицательные элементы. 4) Удалить из списка первый отрицательный элемент. 5) Удалить из списка все нулевые элементы. 6) Удалить из списка первый нулевой элемент. 7) Удалить из списка все нечетные элементы. 8) Удалить из списка первый нечетный элемент. 9) Удалить из списка все четные элементы. 10)
Удалить из списка первый четный элемент.
11)
Удалить из списка все элементы со значением большим заданного
значения. 12)
Удалить из списка первый из элементов со значением большим
заданного значения. 13)
Удалить из списка все элементы со значением меньшим заданного
значения. 14)
Удалить из списка первый из элементов со значением меньшим
заданного значения. 15)
Удалить из списка после каждого элемента с заданным значением
один элемент. 16)
Удалить из списка после первого элемента с заданным значением
один элемент. 17)
Удалить из списка после каждого элемента с заданным значением
один элемент, если его значение отлично от заданного. 18)
Удалить из списка после первого элемента с заданным значением
один элемент, если его значение отлично от заданного. 19)
Удалить из списка перед каждым элементом с заданным значением
один элемент.
6
20)
Удалить из списка перед первым элементом с заданным значением
один элемент. 21)
Удалить из списка перед каждым элементом с заданным значением
один элемент, если его значение отлично от заданного. 22)
Удалить из списка перед первым элементом с заданным значением
один элемент, если его значение отлично от заданного. 23)
Удалить заданное количество элементов в начале списка.
24)
Удалить заданное количество элементов в конце списка.
25)
Удалить
заданное
количество
элементов
перед
последним
элементом. 26)
Удалить заданное количество элементов после первого элемента.
27)
Удалить заданное количество элементов после первого элемента с
заданным значением. 28)
Удалить заданное количество элементов перед первым элементом с
заданным значением. 29)
Удалить «хвост» списка, начиная с элемента с заданным значением.
30)
Удалить
из
списка
все
элементы,
имеющие
наименьшее
все
элементы,
имеющие
наибольшее
(минимальное) значение. 31)
Удалить
из
списка
(максимальное) значение. 32)
Удалить из списка первый из минимальных элементов.
33)
Удалить из списка первый из минимальных элементов, если он не
единственный. 34)
Удалить из списка последний из минимальных элементов.
35)
Удалить из списка последний из минимальных элементов, если он
не единственный. 36)
Удалить из списка первый из максимальных элементов.
37)
Удалить из списка первый из максимальных элементов, если он не
единственный. 38)
Удалить из списка последний из максимальных элементов.
39)
Удалить из списка последний из максимальных элементов, если он
не единственный. 7
Задание 3 Описать рекурсивную процедуру или функцию обработки списка. 1) Выдать элементы списка. 2) Выдать элементы списка в обратном порядке. 3) Подсчитать количество положительных элементов списка. 4) Подсчитать количество отрицательных элементов списка. 5) Подсчитать количество нулевых элементов списка. 6) Подсчитать количество четных элементов списка. 7) Подсчитать количество нечетных элементов списка. 8) Подсчитать число вхождений заданного значения в список. 9) Подсчитать количество элементов со значением, большим заданно. 10)
Подсчитать количество элементов со значением, меньшим заданно.
11)
Определить сумму значений всех элементов списка.
12)
Определить сумму значений всех положительных элементов списка.
13)
Определить сумму значений всех отрицательных элементов списка.
14)
Определить сумму значений всех четных элементов списка.
15)
Определить сумму значений всех нечетных элементов списка.
16)
Определить произведение значений всех элементов списка.
17)
Определить произведение значений всех положительных элементов
списка. 18)
Определить произведение значений всех отрицательных элементов
списка. 19)
Определить среднее арифметическое значений элементов непустого
списка. 20)
Определить минимальный элемент непустого списка.
21)
Определить максимальный элемент непустого списка.
22)
Проверить, входит ли в список хотя бы один нулевой элемент.
23)
Проверить, входит ли в список хотя бы один положительный
элемент. 24)
Проверить, входит ли в список хотя бы один отрицательный
элемент. 8
25)
Проверить, входит ли в список хотя бы один четный элемент.
26)
Проверить, входит ли в список хотя бы один нечетный элемент.
27)
Проверить, входит ли в список хотя бы один элемент с заданным
значением. 28)
Проверить два списка на совпадение (сравнить два списка).
29)
Заменить в списке первое вхождение заданного значения на другое
заданное значение. 30)
Заменить в списке все вхождения заданного значения на другое
заданное значение. Задание 4 Описать рекурсивную процедуру или функцию обработки списка. 1) Удалить из списка первый элемент с нулевым значением. 2) Удалить из списка первый элемент с положительным значением. 3) Удалить из списка первый элемент с отрицательным значением. 4) Удалить из списка первый элемент с четным значением. 5) Удалить из списка первый элемент с нечетным значением. 6) Удалить первый элемент с заданным значением. 7) Удалить из списка все нулевые элементы. 8) Удалить из списка все положительные элементы. 9) Удалить из списка все отрицательные элементы. 10)
Удалить из списка все четные элементы.
11)
Удалить из списка все нечетные элементы.
12)
Удалить все элементы с заданным значением.
13)
Удвоить в списке первое вхождение элемента с заданным
значением. 14)
Удвоить в списке первое вхождение нулевого элемента.
15)
Удвоить в списке первое вхождение положительного элемента.
16)
Удвоить в списке первое вхождение отрицательного элемента.
17)
Удвоить в списке первое вхождение четного элемента.
18)
Удвоить в списке первое вхождение нечетного элемента. 9
19)
Удвоить в списке каждое вхождение элемента с заданным
значением. 20)
Удвоить в списке каждое вхождение нулевого элемента.
21)
Удвоить в списке каждое вхождение положительного элемента.
22)
Удвоить в списке каждое вхождение отрицательного элемента.
23)
Удвоить в списке каждое вхождение четного элемента.
24)
Удвоить в списке каждое вхождение нечетного элемента.
25)
Вставить элемент с заданным значением после первого нулевого
элемента. 26)
Вставить
элемент
с
заданным
значением
после
первого
заданным
значением
после
первого
положительного элемента. 27)
Вставить
элемент
с
отрицательного элемента. 28)
Вставить элемент с заданным значением после первого четного
элемента. 29)
Вставить элемент с заданным значением после первого нечетного
элемента. 30)
Вставить элемент с заданным значением после каждого нулевого
элемента. 31)
Вставить
элемент
с
заданным
значением
после
каждого
заданным
значением
после
каждого
положительного элемента. 32)
Вставить
элемент
с
отрицательного элемента. 33)
Вставить элемент с заданным значением после каждого четного
элемента. 34)
Вставить элемент с заданным значением после каждого нечетного
элемента. 35)
Вставить элемент с заданным значением после первого элемента с
другим заданным значением. 36)
Вставить элемент с заданным значением после каждого элемента с
другим заданным значением. 10
ТЕМА 2. ДВУСВЯЗНЫЕ ЛИНЕЙНЫЕ СПИСКИ Создать двусвязный список с указателями на первый и последний элементы списка. Задание 1 1) Продублировать в списке первый и последний элементы. 2) Продублировать в списке все нулевые элементы. 3) Продублировать в списке все положительные элементы. 4) Продублировать в списке все отрицательные элементы. 5) Продублировать в списке все элементы с заданным значением. 6) Продублировать все элементы со значением большим заданного значения. 7) Продублировать все элементы со значением меньшим заданного значения. 8) Продублировать все элементы с нечетными значениями. 9) Продублировать все элементы с четными значениями. 10)
Продублировать в списке первый из нулевых элементов.
11)
Продублировать в списке первый положительный элемент.
12)
Продублировать в списке первый отрицательный элемент.
13)
Продублировать в списке первый из элементов с заданным
значением. 14)
Продублировать первый из элементов со значением большим
заданного значения. 15)
Продублировать первый из элементов со значением меньшим
заданного значения. 16)
Продублировать первый из элементов с нечетными значениями.
17)
Продублировать первый из элементов с четными значениями.
18)
Переместить первый элемент в конец списка (операции выделения и
освобождения памяти не использовать; информационные поля не менять). 11
19)
Переместить последний элемент в начало списка (операции
выделения и освобождения памяти не использовать; информационные поля не менять). 20)
Переместить первый из элементов с заданным значением в конец
списка (операции выделения и освобождения памяти не использовать; информационные поля не менять). 21)
Переместить первый элемент из элементов с заданным значением в
начало списка (операции выделения и освобождения памяти не использовать; информационные поля не менять). Задание 2 1) Удалить из списка все нулевые элементы. 2) Удалить из списка все положительные элементы. 3) Удалить из списка все отрицательные элементы. 4) Удалить из списка все элементы с заданным значением. 5) Удалить из списка все элементы со значением, большим заданного значения. 6) Удалить из списка все элементы со значением, меньшим заданного значения. 7) Удалить из списка все элементы с нечетными значениями. 8) Удалить из списка все элементы с нечетными значениями. 9) Удалить из списка первый из нулевых элементов. 10)
Удалить из списка первый из положительных элементов.
11)
Удалить из списка первый из отрицательных элементов.
12)
Удалить из списка первый из элементов, с заданным значением.
13)
Удалить из списка первый из элементов со значением, большим
заданного значения. 14)
Удалить из списка первый из элементов со значением, меньшим
заданного значения. 15)
Удалить из списка первый из элементов с нечетным значением.
16)
Удалить из списка первый из элементов с четным значением. 12
ТЕМА 3. ДВОИЧНЫЕ ДЕРЕВЬЯ Задание 1 1) Создать дерево поиска, используя рекурсивную процедуру добавления элемента в дерево. 2) Создать
дерево
поиска,
используя
нерекурсивную
процедуру
добавления элемента в дерево. 3) Создать идеально сбалансированное дерево с n вершинами, значения которых читаются из файла ([3], [10]). Задание 2 1) Описать
рекурсивную
процедуру
обхода
дерева
сверху
вниз
(префиксного обхода). 2) Описать рекурсивную процедуру обхода дерева слева направо (инфиксного обхода). 3) Описать
рекурсивную
процедуру
обхода
дерева
снизу
вверх
(постфиксного обхода). 4) Описать рекурсивную процедуру обхода дерева справа налево (см. [10]) и вывода значения узла дерева на экран с выделением каждого уровня с помощью соответствующего отступа (корень дерева находится на нулевом уровне). 5) Описать нерекурсивную процедуру обхода дерева сверху вниз. 6) Описать нерекурсивную процедуру обхода дерева слева направо. 7) Описать нерекурсивную процедуру обхода дерева снизу вверх. Задание 3 Описать рекурсивную процедуру или функцию решения задачи (значения узлов дерева – целые числа). 1) Подсчитать количество узлов дерева с заданным значением. 2) Подсчитать количество узлов дерева с нулевыми значениями.
13
3) Подсчитать количество узлов дерева с положительными значениями. 4) Подсчитать количество узлов дерева с отрицательными значениями. 5) Подсчитать количество узлов дерева с четными значениями. 6) Подсчитать количество узлов дерева с нечетными значениями. 7) Найти сумму значений всех узлов дерева. 8) Найти сумму положительных значений в узлах дерева. 9) Найти сумму отрицательных значений в узлах дерева. 10)
Найти сумму четных значений в узлах дерева.
11)
Найти сумму нечетных значений в узлах дерева.
12)
Найти произведение значений всех узлов дерева.
13)
Найти произведение положительных значений в узлах дерева.
14)
Найти произведение отрицательных значений в узлах дерева.
15)
Найти произведение четных значений в узлах дерева.
16)
Найти произведение нечетных значений в узлах дерева.
17)
Найти минимальное значение в узлах непустого дерева.
18)
Найти максимальное значение в узлах непустого дерева.
19)
Вычислить среднее арифметическое значений всех узлов дерева.
20)
Вычислить среднее арифметическое положительных значений в
узлах дерева. 21)
Вычислить среднее арифметическое отрицательных значений в
узлах дерева. 22)
Подсчитать количество листьев дерева.
23)
Подсчитать количество внутренних узлов дерева.
24)
Подсчитать количество узлов дерева, не имеющих левого потомка.
25)
Подсчитать количество узлов дерева, не имеющих правого потомка.
26)
Выдать значения из всех листьев дерева.
27)
Выдать значения внутренних узлов дерева.
28)
Выдать значения узлов дерева, больших заданного числа.
29)
Выдать значения узлов дерева, меньших заданного числа.
30)
Создать список адресов всех листьев дерева.
31)
Создать список адресов внутренних узлов дерева. 14
32)
Определить глубину непустого дерева.
33)
Определить количество узлов дерева на заданном уровне.
34)
Определить сумму значений в узлах на заданном уровне.
35)
Проверить, имеется ли в дереве узел с заданным значением.
36)
Проверить, если ли в дереве хотя бы два узла с одинаковыми
значениями. 37)
Удалить листья дерева со значениями, равными заданному числу.
38)
Удалить листья дерева со значениями, большими заданного числа.
39)
Удалить листья дерева со значениями, меньшими заданного числа.
Задание 4 Описать нерекурсивную процедуру или функцию решения задачи (значения узлов дерева – целые числа). 1) Получить значение самого левого листа дерева. 2) Получить значение самого правого листа дерева. 3) Найти минимальное значение в узлах дерева поиска. 4) Найти максимальное значение в узлах дерева поиска. 5) Подсчитать число узлов дерева поиска с заданным значением. 6) Проверить, имеется ли в дереве поиска узел с заданным значением. 7) Включить узел с заданным значением в дерево поиска, если узел с таким значением в нем отсутствует. 8) Определить адрес узла дерева с заданным значением. 9) Выдать, используя очередь, значения из всех узлов дерева по уровням: сначала – из корня дерева, затем (слева направо) – из вершин, дочерних по отношению к корню, затем (также слева направо) – из вершин, дочерних по отношению к этим вершинам, и т.д. ([7]). 10)
Выдать значения узлов заданного уровня дерева (см. 9)).
11)
Решить одну из задач 1) – 29) задания 3, используя стек или
очередь.
15
ЛИТЕРАТУРА 1 Амелина Н.И. Задачи по программированию. / Н.И. Амелина, Я.М. Демяненко, Е.Н. Лебединская, Л.Г. Пасечный, И.Г. Спивак, А.Б. Усов. – М.: Вузовская книга, 2000. – 104 с. – ISBN 5-89522-109-2. 2 Вирт Н. Алгоритмы + структуры данных = программы. – М.: 1989. – 406 с. 3 Вирт Н. Алгоритмы и структуры данных. – М.: Мир, 1989. – 360 с. – ISBN 5-03-001045-9. 4 Епанешников А.М., Епанешников В.А. Программирование в среде Turbo Pascal 7.0 – М.: «Диалог – МИФИ», 1996. – 288 с. – ISBN 5-86404-029-0. 5
Минакова
/ Н.И.Минакова,
Н.И.
Е.С.
Методы
Невская,
программирования. Г.А.
Угольницкий,
Учебное А.А.
пособие
Чекулаева,
М.И. Чердынцева. – М.: Вузовская книга, 2000. –280 с. –ISBN 5-89522-038-X. 6
Невская
Е.С.,
Чекулаева
А.А.,
Чердынцева
М.И.
Искусство
программирования. – М.: Вузовская книга, 2002. – 240 с. – ISBN 5-9502-0003-9. 7 Пильщиков В.Н. Сборник упражнений по языку Паскаль. – М.:. Наука, 1989. – 160 с. – ISBN 5-02-013995-5. 8 Фаронов В.В. Турбо Паскаль 7.0. Начальный курс. – М.: «Нолидж», 1997. – 616 с. ISBN 5-89251-012-3. 9 Абрамян М.Э. Указатели и объекты в Турбо-Паскале. Методические указания для студентов механико-математического факультета. Части 1, 2. – Ростов-на-Дону, УПЛ РГУ, 1996. 10 Амелина Н.И., Чердынцева М.И. Структуры данных. Деревья. Методические указания по курсу «Алгоритмические языки и методы трансляции» для студентов механико-математического факультета дневного и вечернего отделения. – Ростов-на-Дону, УПЛ РГУ, 1998. 11 Чекулаева А.А., Спивак И.Г. Динамические структуры данных. Методические указания для студентов вечернего отделения механикоматематического факультета. – Ростов-на-Дону, УПЛ РГУ, 1998.
16