Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
metodichka_SI.doc
Скачиваний:
30
Добавлен:
23.02.2015
Размер:
2.05 Mб
Скачать

Примеры:

a-bab-;

a*b+c  ab*c+;

a*(b+c) abc+*;

a+bcd*e abcde*+.

Вычислить как целое число значение выражения (без переменных), записанного в постфиксной форме в текстовом файле postfix.

  1. Создать программу, которая отыскивает проход по лабиринту.

Лабиринт представляется в виде матрицы, состоящей из квадратов. Каждый квадрат либо открыт, либо закрыт. Вход в закрытый квадрат запрещен. Если квадрат открыт, то вход в него возможен со стороны, но не с угла. Каждый квадрат определяется его координатами в матрице.

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

  1. Алгоритм.

Выражение просматривается слева направо. Если встречается операнд (число), то его значение (как целое) заносится в стек, а если встречается знак операции, то из стека извлекаются два последних элемента (это операнды данной операции), над ними выполняется операция, и ее результат записывается в стек. В конце концов, в стеке останется только одно число – значение всего выражения.

  • Перевести выражение, записанное в обычной (инфиксной) форме в текстовом файле infix, в постфиксную форму. Записать его в текстовый файл postfix.

  1. Алгоритм.

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

  • Напечатать в обычной (инфиксной) форме выражение, записанное в постфиксной форме в текстовом файле postfix. Лишние скобки желательно не печатать.

Двусвязные списки

  1. Дан двусвязный список:

    1. вывести количество элементов в списке;

    2. вставить перед (после) данным элементом списка новый элемент;

    3. добавить в начало списка новый элемент, а в конец – другой новый элемент;

    4. добавить набор чисел после (перед) i-го элемента;

    5. продублировать в списке первый и последний элементы (новые элементы добавлять перед (после) существующими элементами с такими же значениями);

    6. продублировать в списке все элементы с нечетными номерами (новые элементы добавлять перед существующими элементами с такими же значениями);

    7. удалить из списка i-ый элемент;

    8. удалить из списка все элементы с нечетными номерами;

    9. удалить из списка все элементы с нечетными значениями;

    10. удалить из списка nэлементов и вывести их значения;

    11. переместить i-ый элемент в начало (конец) списка;

    12. переместить в списке i-ый элемент наkпозиций вперед (назад);

    13. перегруппировать элементы списка, переместив все элементы с нечетными (четными) номерами (значениями) в конец (начало) списка;

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

    15. преобразовать список в два циклических списка, разбив изначальный на равное количество элементов;

    16. осуществить циклический сдвигэлементов списка наKпозиций вперед (назад) (то есть в направлении от начала к концу списка). Для выполнения циклического сдвига преобразовать исходный список в циклический;

    17. присвоить нулевые значения элементам исходного списка с нечетными номерами и вывести количество элементов в списке;

    18. вывести все четные значения элементов исходного списка, просматривая список с конца. Вывести также количество элементов в списке.

  2. Дано два двусвязных списка.

    1. добавить один из списков, в конец другого. Вывести полученный список;

    2. переместить заданный элемент одного списка в другой на заданную позицию;

    3. объединить исходные списки, поместив все элементы первого списка (в том же порядке) перед (после) данным (-го) элементом (-а) второго списка.

Двусвязные списки с барьерным элементом

  1. Дан двусвязный список. Барьерный элемент должен иметь значение 0 и быть связан с первым и последним элементом исходного списка.

    1. Разбить список на два, перенеся во второй список все элементы от текущего до последнего и добавив ко второму списку барьерный элемент. Если текущий элемент исходного списка является барьерным элементом, то второй список должен быть пустым (то есть состоять только из барьерного элемента);

    2. Добавить в конец исходного списка данный набор чисел (в том же порядке (в обратном порядке)) и вывести адрес текущего элемента полученного списка.

  1. Даны два двусвязных списка. Барьерный элемент должен иметь значение 0 и быть связан с первым и последним элементом исходного списка. Объединить исходные списки, связав конец первого и начало второго списка (барьерным элементом объединенного списка должен остаться барьерный элемент первого (второго) списка).

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

Деревья

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]