Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Data Structures and Algorithms in C++ 2e (На ру...docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
2.37 Mб
Скачать

3.6. Упражнения

3.6 Упражнения

Для помощи с упражнениями, пожалуйста, посетите веб-сайт, www.wiley.com/college/goodrich. <www.wiley.com/college/goodrich>

Укрепление

149

R-3.1 Измените внедрение Очков класса так, чтобы в большей частиmaxEnt/2 

очки могут прибыть от любого сингла.

R-3.2 предположим, что два записей множества A равны друг другу. После того, как управляется -

ning алгоритм вида вставки Кодового Фрагмента 3.7, они появятся в том же самом относительном заказе в сортированном заказе финала или в обратном порядке? Объясните свой ответ.

R-3.3 Дайте C ++ кодовый фрагмент что учитывая n n матрица M типа float,

заменяет M перемещать. Попытайтесь сделать это без использования временного служащего

матрица.

R-3.4 Опишите способ использовать рекурсию, чтобы вычислить сумму всех элементов в

n n (двумерное) множество целых чисел.

R-3.5 Дайте рекурсивное определение отдельно связанного списка.

R-3.6 Добавьте размер функции () к нашему C ++ внедрение отдельно список связи. Может

Вы проектируете эту функцию так, чтобы она бежала в O (1) время?

R-3.7 Дайте алгоритм для нахождения предпоследнего (предпоследнего) узла в a

отдельно связанный список, где последний элемент обозначен пустым указателем затем, связывается.

R-3.8 Дайте полностью универсальное внедрение вдвойне связанной структуры данных списка

из Раздела 3.3.3 при помощи templated класса.

R-3.9 Дайте более прочное внедрение вдвойне связанных данных о списке struc-

ture Раздела 3.3.3, который бросает соответствующее исключение, если незаконная операция предпринята.

R-3.10 Опишите нерекурсивную функцию для нахождения, прыгающей связью, середина

узел вдвойне связанного списка с заголовком и стражами трейлера. (Отметьте: Эта функция должна только использовать прыгающую связь; это не может использовать прилавок.), Какова продолжительность этой функции?

R-3.11 Опишите рекурсивный алгоритм для нахождения максимального элемента в

выстройте n элементов. Каковы Ваша продолжительность и космическое использование? R-3.12 Потяните след рекурсии для выполнения функции ReverseArray (A, 0, 4)

(Кодовый Фрагмент 3.39) на множестве =4, 3, 6, 2, 5.

R-3.13 Потяните след рекурсии для выполнения функции PuzzleSolve (3, S, U)

(Кодовый Фрагмент 3.44), где S пуст и U =a, b, c, d.

150

Глава 3. Множества, связанные списки и рекурсия

R-3.14 Напишите короткий C ++ функция, которая неоднократно выбирает и удаляет управление -

вход dom от множества n-элемента до множества не держит больше записей. Предположите, что у Вас есть доступ к функции, случайной (k), который возвращает случайное целое число в диапазоне от 0 до k.

R-3.15 Дайте полностью универсальное внедрение циркулярных связанных данных о списке struc-

ture Раздела 3.4.1 при помощи templated класса.

R-3.16 Дайте более прочное внедрение циркулярных связанных данных о списке struc-

ture Раздела 3.4.1, который бросает соответствующее исключение, если незаконная операция предпринята.

R-3.17 Напишите короткий C ++ функция, чтобы посчитать число узлов в циркулярном

связанный список.

Креативность

C-3.1 В примере Tic-Tac-Toe мы использовали 1 для игрока X и-1 для игрока О.

Объясните, как изменить уловку подсчета программы, чтобы решить победителя

если мы использовали 1 для игрока X и 4 для игрока О вместо этого. Мы могли использовать какую-либо комбинацию ценностей a и b для этих двух игроков? Объяснить.

C-3.2 Дайте C ++, кодекс для выполнения добавляет (e) и удаляет (i) функции для игры

записи, сохраненные во множестве a, как в Очках класса в Разделе 3.1.1, кроме этого времени, не поддерживают записи игры в заказе. Предположите, что нам все еще нужно

сохранять n записи сохраненными в индексах 0 к n- 1. Попытайтесь осуществить добавление

и удалите функции, не используя петель, так, чтобы число шагов

они выступают, не зависит от n.

C-3.3 Позвольте A быть множеством размера n³ 2 содержащий целые числа от 1 до n- 1, inclu-

sive, точно с один повторился. Опишите быстрый алгоритм для нахождения

целое число в, который повторен.

C-3.4 Позвольте B быть множеством размера n³ 6 содержащий целые числа от 1 до n- 5, inclu-

sive, точно с пять повторился. Опишите хороший алгоритм для нахождения

пять целых чисел в B, которые повторены.

C-3.5 предположим Вы проектируете многопользовательскую игру, у которой есть n³ 1 000 игроков,

пронумерованный 1 к n, взаимодействующему в очарованном лесу. Победитель этого

игра - первый игрок, который может встретить всех других игроков, по крайней мере, однажды (связи позволены). Предположение, что есть функция, встречается (я, j), который называют каждый раз, когда игрок i встречает игрока j (со мной = j), опишите способ отслеживать пары встречающихся игроков и кто победитель.

C-3.6 Дайте рекурсивный алгоритм, чтобы вычислить продукт двух положительных целых чисел,

m и n, используя только дополнение и вычитание. C-3.7 Опишите быстрый рекурсивный алгоритм для изменения отдельно связанного списка L, таким образом,

то, что заказ узлов становится противоположностью того, чем это было прежде.