Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Архив1 / docx31 / Zapiska_full.docx
Скачиваний:
25
Добавлен:
01.08.2013
Размер:
542.31 Кб
Скачать

39

Содержание

1 Задача №1.7_______________________________________________3

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

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

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

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

2 Задача №2.45_______________________________________________6

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

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

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

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

3 Задача №3.14______________________________________________12

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

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

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

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

4 Задача №4.21______________________________________________18

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

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

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

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

Приложение_______________________________________________21

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

1 Задача №1.7

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

Задание : Дан двунаправленный список. Упорядочить его элементы по возрастанию.

Для удобства создадим список целых чисел. Чтобы упорядочить элементы будем использовать сортировку пузырьком.

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

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

type sp=^uk;

uk=record;

data: integer;

next,pred:sp;

end;

Структура содержит информационное поле data(хранит целые числа), а также поля next и prev – указатели на следующий и предыдущий элементы списка.

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

Для решения задачи создадим следующие процедуры: create_twodirectlist(создание списка), sort(сортировка), printf(печать списка).

Сперва заполняем наш список целыми числами. Пользователь вводит элементы с клавиатуры, окончанием ввода считаем 0.

Для создания списка реализована процедура create_twodirectlist.

Листинг процедуры create_twodirectlist:

procedure create_twodirectlist(var head,ends: sp;s: integer);

var x,p: sp;

begin

if head=nil then

begin

new(x);

x^.data:=s;

x^.next:=nil;

x^.pred:=nil;

head:=x;

end_sp:=x;

p:=head;

end

else

begin

new(x^.next);

x:=x^.next;

x^.data:=s;

x^.next:=nil;

x^.pred:=p;

p:=x^.next;

end_sp^.next^.pred:=end_sp;

end_sp:=end_sp^.next;

end_sp^.next:=nil;

end;

end;

Далее введенные данные передаются в процедуру sort, которая сортирует элементы пузырьком:

procedure sort(p: sp);

var buf:sp;

inf: integer;

begin

while p<>nil do

begin

buf:=p^.next;

while buf<>nil do

begin

if p^.data>buf^.data then

begin

inf:=buf^.data;

buf^.data:=p^.data;

p^.data:=inf;

end;

buf:=buf^.next;

end;

p:=p^.next;

end;

end;

Соседние файлы в папке docx31