Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Архив1 / docx55 / МИНИСТЕРСТВО ОБРАЗОВАНИЯ РЕСПУБЛИКИ БЕЛАРУСЬ.docx
Скачиваний:
17
Добавлен:
01.08.2013
Размер:
115.2 Кб
Скачать

Содержание

1 Задача №1.57_______________________________________________3

1.1. Постановка задачи и её анализ_________________________3

1.2. Описание структур данных____________________________3

1.3. Проектирование программы___________________________4

1.4. Результаты тестирования______________________________4

2 Задача №2.14_______________________________________________5

2.1. Постановка задачи и её анализ_________________________5

2.2. Описание структур данных____________________________5

2.3. Проектирование программы___________________________5

2.4. Результаты тестирования______________________________5

3 Задача №3.24______________________________________________6

3.1. Постановка задачи и её анализ________________________6

3.2. Описание структур данных___________________________6

3.3. Проектирование программы__________________________6

3.4. Результаты тестирования_____________________________8

4 Задача №4.34______________________________________________9

4.1. Постановка задачи и её анализ________________________9

4.2. Описание структур данных___________________________9

4.3. Проектирование программы__________________________9

4.4. Результаты тестирования____________________________10

5 Список использованных источников__________________________11

1 Задача №1.57

1.1 Постановка задачи и ее анализ

Составить программу, которая формирует двунаправленный список L, включив в него по одному разу элементы, которые входят в один из списков L1 и L2, но в то же время не входят в другой. Списки реализовать через указатели.

1.2. Описание структур данных

Для реализации данной программы будем использовать двунаправленный список со следующей структурой:

type sp=^uk; //указатель на узел

uk=record; //структура узла

data: integer;

next,pred:sp; //указатели на следующий и предыдущий элемент

1.3. Проектирование программы

Для работы с двунаправленным списком я реализовала следующие функции и процедуры:

*Procedure Create (создание списка)

*Procedure Printf (вывод списка)

*Procedure DeleteNode (удаление элемента из списка)

*Procedure Sravn (сравнение элементов двух списков и удаление одинаковых)

*Procedure Unite (объединение списков)

Рассмотрим подробнее процедуру Sravn, которая является основой создания итогового списка:

Procedure Sravn(var st:sp; var st1:sp);

var cur,tp:sp;

begin

cur:=st;

tp:=st1;

while cur<>nil do //пока не дошли до конца

begin

while tp<>nil do //пока не дошли до конца

begin

if cur^.data=tp^.data then //если элемент второго списка равен элементу первого

begin

Deletenode(st,cur); //удаляем этот элемент из одного списка

Deletenode(st1,tp); //удаляем этот элемент из другого списка

end;

tp:=tp^.next; //переносим указатель

end;

cur:=cur^.next; //переносим указатель

tp:=st1;

end;

end;

1.4. Результаты отладки и тестирования программы.

Для проверки корректности выполнения программы были введены и занесены в 2 двунаправленных списка случайные числа: L1 – 1 3 5 7 9; L2 – 2 4 6 8 5 3. Полученный список: L – 1 7 9 2 4 6 8, результат слияния элементов, которые входят в один из списков L1 и L2, но в то же время не входят в другой. Следовательно, тест прошёл успешно, программа работает правильно (рис 1.1.):

Рис. 1.1. – Результат слияния двух списков