- •Структуры и алгоритмы компьютерной обработки данных
- •Оглавление
- •Предисловие
- •Теоретический курс
- •1. Основные структуры данных
- •2. Задачи поиска в структурах данных
- •3. Задачи сортировки в структурах данных
- •4. Методы ускорения доступа к данным
- •5. Представление графов и деревьев
- •Лабораторный практикум
- •Лабораторная работа 1. Стеки и очереди
- •Необходимые исходные сведения
- •Блок-схема алгоритма
- •Контрольные вопросы
- •Лабораторная работа 2. Бинарные деревья
- •Необходимые исходные сведения
- •Результаты расчетов
- •Контрольные вопросы
- •Лабораторная работа 3. Поиск в таблице значений
- •Необходимые исходные сведения
- •Блок-схема алгоритма
- •К онтрольные вопросы
- •Лабораторная работа 4. Сортировка значений в таблице
- •Необходимые исходные сведения
- •Рекомендации по выполнению курсовой работы
- •1. Тематика курсовых работ
- •2. Последовательность выполнения работы
- •3. Оформление работы
- •4. Подготовка курсовой работы к защите
- •5. Типовые задания для курсовых работ
- •Примерные тестовые вопросы
- •Список рекомендуемой литературы
- •Структуры и алгоритмы компьютерной обработки данных Учебное пособие
- •428015 Чебоксары, Московский просп., 15
Блок-схема алгоритма
Текст программы:
Очередь:
uses
crt;
const
n=10;
type
ct=^celltype;
celltype=record
element:byte;
next:ct;
end;
queue=record
front:ct;
rear:ct;
end;
var
s:queue;
x:byte;
procedure insert(var q:queue;x:byte);
begin
new(q.rear^.next);
q.rear:=q.rear^.next;
q.rear^.element:=x;
q.rear^.next:=nil;
end;
procedure create(var q:queue);
var
i,x:byte;
begin
new(q.front);
q.front^.next:=nil;
q.rear:=q.front;
for i:=1 to n do
begin
x:=round(random*100);
insert(q,x);
end;
writeln('QUEUE IS CREATE.');
end;
procedure delstart(var q:queue);
begin
q.front:=q.front^.next;
end;
function remove(var q:queue):byte;
begin
remove:=q.front^.next^.element;
delstart(q);
end;
procedure printqueue(var q:queue);
var
temp:queue;
begin
writeln('QUEUE:');
temp:=q;
while temp.front^.next<>nil do
begin
write(temp.front^.next^.element,' ');
temp.front:=temp.front^.next;
end;
writeln;
end;
procedure delqueue(var q:queue);
begin
while q.front^.next<>nil do delstart(q);
writeln('QUEUE IS DELETE.');
end;
begin
clrscr;
randomize;
create(s);
printqueue(s);
x:=remove(s);
writeln('X:=',x);
printqueue(s);
delqueue(s);
readkey;
end.
Стек:
uses
crt;
const
n=10;
type
ct=^celltype;
celltype=record
element:byte;
next:ct;
end;
stack=record
top:ct;
fin:ct;
end;
var
q:stack;
x:byte;
procedure push(var s:stack);
begin
new(s.fin^.next);
s.fin:=s.fin^.next;
s.fin^.element:=round(random*100);
s.fin^.next:=nil;
end;
procedure create(var s:stack);
var
i:byte;
begin
new(s.top);
s.top^.next:=nil;
s.fin:=s.top;
for i:=1 to n do push(s);
writeln('STACK IS CREATE.');
end;
procedure pop(var s:stack);
var
temp:stack;
begin
temp:=s;
while temp.top^.next<>s.fin do temp.top:=temp.top^.next;
s.fin:=temp.top;
end;
function stacktop(var s:stack):byte;
begin
stacktop:=s.top^.next^.element;
end;
procedure printstack(var s:stack);
var
temp:stack;
begin
writeln('STACK:');
temp:=s;
while temp.top^.next<>nil do
begin
write(temp.top^.next^.element,' ');
temp.top:=temp.top^.next;
end;
writeln;
end;
procedure delstack(var s:stack);
begin
s.top^.next:=nil;
writeln('STACK IS DELETE.');
end;
begin
clrscr;
randomize;
create(q);
printstack(q);
x:=stacktop(q);
writeln('TOP:=',x);
delstack(q);
readkey;
end.
Р
езультаты
расчетов
Для очереди S: 64,88,62,1,56,80,64,39,62,9 результат работы функции REMOVE(S) будет следующим: X=64, S: 88,62,1,56,80,64,39,62,9.
Д
ля
стека Q:
6,27,96,14,76,96,35,14,63,74 результат работы функции STACKTOP(Q) будет следующим: TOP=6.
