Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
uchebno-metodicheskoe_posobie_SiAOD_1chast / учебно-методическое пособие СиАОД 1часть.doc
Скачиваний:
94
Добавлен:
20.03.2015
Размер:
1 Mб
Скачать

Контрольные вопросы

  1. Дайте определение динамической структуре список.

  2. Сколько элементов может содержать список? Как заканчивается список?

  3. Сколько полей может содержать элемент списка? От чего зависит количество полей? Приведите примеры.

  4. Какого типа могут быть поля элементов списка? Приведите примеры.

  5. Обязательно ли применять процедуру освобождения памяти, занятой элементом, когда мы избавляемся от этого элемента в списке? Каким образом это влияет на работу программы?

  6. Можно ли ссылку одного элемента направить сразу на два или больше других элемента? Как необходимо поменять тип указателя, чтобы решить эту проблему?

  7. Может ли элемент списка быть такого типа, чтобы содержать несколько полей типа указателя? Если – да, то приведите пример для чего это может быть нужно.

  8. Можно ли последовательно "связать" два списка разного типа и почему?

  9. Можно ли одновременно работать с несколькими списками сразу?

  10. Как Вы считаете, на что нужно обращать особое внимание при работе со списками?

Задания для практической работы

  1. Задан текст, состоящий из строк, разделенных пробелом и оканчивающийся точкой. Написать подпрограмму поиска заданного элемента в списке. Используя эту подпрограмму :

    1. подсчитать количество вхождений заданного символа в каждую строку текста. Вхождение задавать номером строки и номером позиции в строке;

    2. найти все вхождения ( см. пункт 1.а ) заданного символа в текст;

    3. найти первое вхождение ( см. пункт 1.а) каждой десятичной цифры в текст;

    4. найти первое вхождение ( см. пункт 1.а ) гласных латинских букв в текст;

    5. подсчитать количество вхождений четных ( нечетных ) десятичных цифр в каждую строку текста;

    6. заменить заданный символ, если он имеется в тексте, на новое значение (символ), считая, что символ входит в каждую строку не более одного раза;

    7. удалить все вхождения заданного символа из текста;

    8. после последнего вхождения каждой гласной латинской буквы в строку текста вставить цифру, изображающую число вхождений этой гласной в данную строку ( в строке содержится не более девяти одинаковых гласных );

    9. если в строке текста содержится заданный символ, то переместить его на место первого символа в этой строке;

    10. если в строке текста содержится заданный символ, то переместить его на место последнего символа в этой строке.

  1. Даны действительные числа x1, x2, . . . , xn ( n >= 2 и заранее неизвестно). Получить последовательность ( x1 – xn ) , ( x2 – xn ) , . . . , ( xn-1 – xn ).

  2. Дана последовательность действительных чисел a1, a2, . . . , an ( n >= 2 и заранее неизвестно). Если последовательность упорядочена по неубыванию, то оставить ее без изменения, иначе получить последовательность an , an-1 , . . . , a1 .

  3. Для заданных полиномов Pn( x ) и Qn( x ) найти полином R - сумму полиномов P и Q. Каждый полином представить в виде списка:

Причем в список

а) включать,

б) не включать и коэффициенты равные нулю.

Считать, что входные данные не содержат равных нулю коэффициентов.

  1. Дана последовательность символов s1 , s2 , . . . , sn ( n >= 2 и заранее неизвестно). Получить те символы, принадлежащие последовательности, которые входят в нее по одному разу.

  2. Дана последовательность символов s1 , s2 , . . . , sn ( n >= 2 и заранее неизвестно). Получить последовательность символов, содержащую только последние вхождения каждого символа в строку с сохранением их исходного взаимного порядка.

  3. Дана последовательность символов s1 , s2 , . . . . Известно, что s1 отличен от точки и , что среди s2 , s3 , . . . имеется хотя бы одна точка. Пусть s1 , s2 , . . . , sn - символы, предшествующие первой точке. Получить последовательность s1 , s3 , . . . , sn , если n нечетно и последовательность s2 , s4 , . . . , sn , если n четно.

  4. Написать программу, которая удаляет из списка М второй элемент, если такой есть.

  5. Написать программу, которая удаляет из списка М N-ый элемент, если такой есть. N задает пользователь.

  6. Написать программу, удаления из заданного списка все вхождения элемента с заданным значением информационной части.

  7. Написать программу, которая удаляет из списка М за каждым вхождением элемента Е один элемент, если такой есть и он отличен от Е.

  8. Написать программу, которая удаляет из списка М первый отрицательный элемент, если такой есть.

  9. Написать программу, которая удаляет из списка М все отрицательные элементы.

  10. Написать программу, которая формирует список М, включив в него по одному разу элементы, которые входят хотя бы в один из списков М1 и М2.

  11. Написать программу, которая формирует список М, включив в него по одному разу элементы, которые входят одновременно в оба списка М1 и М2.

  12. Написать программу, которая формирует список М, включив в него по одному разу элементы, которые входят в список М1, но не входят в список М2.

  13. Написать программу, которая меняет местами первый и второй элементы непустого списка. Если элементы не найдены, то выдать на экран соответствующие сообщение.

  14. Написать программу, которая меняет местами первый и пятый элементы непустого списка. Если элементы не найдены, то выдать на экран соответствующие сообщение.

  15. Написать программу, которая меняет местами первый и последний элементы непустого списка. Если элементы не найдены, то выдать на экран соответствующие сообщение.

  16. Написать программу, которая вставляет новый элемент перед каждым вхождением заданного элемента. Если элементы не найдены, то выдать на экран соответствующие сообщение.

  17. Написать программу, которая вставляет новый элемент за каждым вхождением заданного элемента. Если элементы не найдены, то выдать на экран соответствующие сообщение.

  18. Написать программу, которая проверяет на равенство списки М1 и М2.

  19. Написать программу, которая определяет, входит ли список М1 в список М2. Предполагается, что списки существуют.

  20. Написать программу, которая копирует в конец непустого списка М его первый элемент. Если элементы не найдены, то выдать на экран соответствующие сообщение.

  21. Написать программу, которая копирует в начало непустого списка М его последний элемент. Если элементы не найдены, то выдать на экран соответствующие сообщение.

  22. Написать программу, которая копирует в список М за каждым вхождением заданного элемента все элемента списка М1.

  23. Написать программу, которая объединяет два упорядоченных по неубыванию списка М1 и М2 в один упорядоченный по неубыванию список, построив новый список М.

  24. Написать программу, которая объединяет два упорядоченных по неубыванию списка М1 и М2 в один упорядоченный по неубыванию список, сменив соответствующим образом ссылки в М1 и М2.

  25. Написать программу, которая проверяет, упорядочены ли элементы списка по алфавиту.