Помощь в написании студенческих работ
Антистрессовый сервис

Списки. 
Основные конструкции языка Паскаль

РефератПомощь в написанииУзнать стоимостьмоей работы

Система двусторонних дорог называется трисвязной, если для любой четверки разных городов A, B, C, D существует два различных пути из A в D, причем один из них проходит через B, а другой через C. Определить является ли трисвязной данная система двусторонних дорог. Сеть дорог — связанный список. N ребят располагаются по кругу. Начав отсчет от первого удаляют каждого k-го, смыкая круг после каждого… Читать ещё >

Списки. Основные конструкции языка Паскаль (реферат, курсовая, диплом, контрольная)

Линейным однонаправленным списком называют последовательность однородных элементов данных (a1, a2, …, ak), в которой каждое ai указывает на следующий за ним элемент.

Пример:

Требуется создать список фамилий в алфавитном (заданном) порядке.

Решение:

TYPE {предварительное описание типа}

TypePtrNode = ^TypeNode;

TypeNode = Record

fio: string [20];

next: TypePtrNode

End;

{Процедура включения фамилии в алфавитном (заданном) порядке}.

Procedure IncludeOrder (Var Head: TypePtrNode, fio: string[20]);

VAR {Headуказатель на начало списка}

pcurr, pleft, pright: TypePtrNode;

BEGIN

{так как включение выполняется, то выделим память заранее}

new (pcurr); pcurr^.fio:= fio;

pcurr^.next:= nil;

{Список может быть пуст, тогда его Head — nil}

if (Head = nil) then

begin

Head := pcurr; pcurr:= nil;

end

else

begin

if (Head^.next = nil) then {список состоит

из одного элемента}

begin

if (fio>Head^.fio) then

{включить в конец}

Begin

head^.next:= pcurr; pcurr := nil;

end

else

Begin

pcurr^.next:= head; head:= pcurr;

pcurr:= nil;

end;

end

else

{в списке более одного элемента; случай, а: нужно включить элемент первым — похож на предыдущий вариант}

if (fio <= head^.fio) then

Begin

pcurr^.next:= head;

head:= pcurr;

pcurr: = nil;

End

else

{просмотр списка в цикле}

pleft:= head; pright: = head^.next;

{известно, что включение или где-то внутри, или где-то в конце и left^.fio>fio}

while (pright nil) do

Begin

if (fio <= pright^.fio) then {включить}

Begin

pcurr^.next:= pleft^.next;

pleft^.next:= pcurr;

pcurr:= nil; pleft:= nil; pright := nil;

End;

pleft: =pleft^.next; pright:= pright^.next;

End;

{при выходе из цикла если pright = nil, то нужно включить в конец цикла}

If pright=nil then pleft^.next:= pcurr; pcurr:= nil; pleft:= nil;

End;

ВАРИАНТЫ:

  • 1. Информация о студенте состоит из его фамилии, возраста (число лет), пола и успеваемости (оценки по пяти предметам). Ввести информацию о группе студентов, представляя ее в виде связанного одностороннего списка. Один элемент списка содержит информацию об одном студенте:
    • а) удалить из списка всех студентов, имеющих не менее трех двоек;
    • б) вычислить средний возраст студентов и средний возраст студенток.
  • 2. Входная последовательность символов задает арифметическое выражение, содержащее бинарные операции +, *, круглые скобки и однобуквенные идентификаторы. Построить в виде связанной списочной структуры двоичное дерево, представляющее выражение, задаваемое входной последовательностью и затем преобразовать его «раскрытием скобок».
  • 3. Для стека (магазина) символов, представленного списком, описать в виде функций и процедур операции «добавить», «удалить» и «получить» верхний элемент.
  • 4. Входную последовательность разбить на отрезки длины 10 и представить в программе в виде одностороннего связанного списка с компонентами массивами символ длины 10 (последний массив при необходимости дополнить пробелами). Подсчитать число созданных элементов списка.
  • 5. Предполагается, что уже построен и задан указателем P связанный двусторонний список с элементами — целыми числами:
    • а) заданное значение включить в список в качестве 1-го элемента;
    • б) удалить из списка последний элемент;
    • в) напечатать значения элементов списка в порядке, обратном их расположению в списке, не меняя сам список.
  • 6. Для очереди целых чисел, представленной в программе заданым списком, описать в виде функций или процедур операции «добавить», «удалить» и «получить» элемент.
  • 7. Входная последовательность символов задает арифметическое выражение, содержащее бинарные операции +, -, *, /, круглые скобки и однобуквенные идентификаторы. Построить в виде связанной списочной структуры двоичное дерево, представляющее выражение, задаваемое входной последовательностью. Определить высоту заданного двоичного дерева.
  • 8. Информация о студенте состоит из его фамилии, возраста (число лет), пола и успеваемости (оценки по пяти предметам). Ввести информацию о группе студентов, представляя ее в виде связанного одностороннего списка. Один элемент списка содержит информацию об одном студенте:
    • а) найти студента первого по порядку студента, возраст которого менее 17 лет;
    • б) удалить из списка первого по порядку мужчину;
    • в) переупорядочить данный список по не возрастанию суммы оценок каждого студента по всем предметам.
  • 9. Предполагается, что уже построен и задан указателем P связанный односторонний список, элементами которого являются символы:
    • а) подсчитать число элементов списка;
    • б) проверить упорядочен ли список по возрастанию.
  • 10. Предполагается, что уже построен и задан указателем P связанный односторонний список, элементами которого являются символы:
    • а) проверить, совпадает ли заданное значение с каким либо элементом списка;
    • б) включить в список, упорядоченный по не убыванию, элемент не нарушая порядок.
  • 11. Предполагается, что уже построен и задан указателем P связанный двусторонний список:
    • а) подсчитать его длину;
    • б) вставить элемент в лексикографическом порядке.
  • 12. Формулу вида

:=| ().

:=+ | - | * | /.

:= 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9.

можно представить в виде двоичного дерева:

  • а) вычислить значения дерева;
  • б) по формуле из текстового файла f построить дерево;
  • в) печатать дерево в виде соответствующей формулы. Определить высоту заданного дерева.
  • 13. Задана система двусторонних дорог. Найти два города и соединяющий их путь, который проходит через каждую из дорог системы ровно один раз. Система дорог задана списком.
  • 14. Система двусторонних дорог называется трисвязной, если для любой четверки разных городов A, B, C, D существует два различных пути из A в D, причем один из них проходит через B, а другой через C. Определить является ли трисвязной данная система двусторонних дорог. Сеть дорог — связанный список.
  • 15. Во внешнем текстовом файле PROG записана (без ошибок) некоторая программа на языке Паскаль. Известно, что в этой программе каждый идентификатор (служебное слово или имя) содержит не более 9 латинских букв и/или цифр. Напечатать в алфавитном порядке все различные идентификаторы этой программы, указав для каждого из них число его вхождений в текст программы. Для хранения идентификаторов использовать дерево поиска, элементы которого являются пары — идентификатор и число его вхождений в текст программы.
  • 16. Многочлен с целыми коэффициентами можно представить в виде списка. Определить следующие процедуры и функции:
    • а) процедуру dif (p, q), которая строит многочлен pпроизводную многочлена q;
    • б) процедуру add (p, q, r), которая строит многочлен p — сумму многочленов q и r;
    • в) функцию znach (p, x) — значение многочлена p в точке x.
  • 17. Объединить два упорядоченных по не убыванию списка L1 и L2 (тип элемента — real) в один упорядоченный по не убыванию список:
    • а) построить новый список L;
    • б) меняя ссылки получить один список L1.
  • 18. Используя очередь и стек из входного файла f проанализировать текст сбалансированный по скобкам:

:= |.

:=|().

Напечатать упорядоченные пары номеров открывающих скобок.

  • 19. Пусть дан циклический двунаправленный список, с информационным полем — целое число:
    • а) удалить из списка первый отрицательный элемент;
    • б) добавить в конец списка новый элемент;
    • в) печатать элементы в обратном порядке.
  • 20. N ребят располагаются по кругу. Начав отсчет от первого удаляют каждого k-го, смыкая круг после каждого удаления. Определить порядок удаления ребят из круга. Напечатать номера ребят в том порядке, как они удаляются из круга (циклический список — структура реализации).
  • 21. Дан список L — однонаправленный, с числовым полем:
    • а) перенести в конец непустого списка L его первый элемент;
    • б) перевернуть список, т. е. изменить ссылки в этом списке так, чтобы

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

  • 22. Представить граф, заданный матрицей смежностей в виде связанной списочной структуры, предполагая, что из каждой вершины выходит не более трех дуг. Для вершины, заданной указателями найти:
    • а) каждую вершину, в которую из нее ведет дуга;
    • б) вершины, в которые из нее ведет путь длины три и не короче.
Показать весь текст
Заполнить форму текущей работой