Частина тексту файла (без зображень, графіків і формул):
Міністерство освіти і науки України
НУ „Львівська політехніка”
Кафедра ЕОМ
ЗВІТ
про виконання лабораторної роботи №4
на тему:
”Структура даних черга ”
Студента групи КІ-17
Кохалика Романа
Прийняв: Хедик Л. В.
——Львів 2004——
Тема: Структура даних черга.
Мета: Вивчити програмну реалізацію черг на мові Turbo Pascal.
Короткі теоретичні відомості
Черга — це впорядкований набір елементів, що можуть вилучатися з одного кінця, який називається початок черги (голова, Head) і додаватись у другий кінець, який називається кінцем черги (хвіст, Tail).
Над чергою визначені дві основні процедури: Вставка (Insert) і вилучення (Remove). Приклади цих процедур подано нижче.
Завдання до роботи.
Реалізувати програмно сортувальну чергу по зростанню і показати вставку в неї елемента.
Текст програми:
PROGRAM Queue;
USES CRT;
TYPE TInfo=integer;
Plist=^Elem;
Elem=record
info:Tinfo;
next:plist;
end;
QType=record
Head,tail:Plist;
end;
Procedure Init (Var Q:qtype);
Begin
Q.head:=nil;
Q.tail:=nil;
end;
Function Empty (Q:qtype):boolean;
Begin
Empty:=q.head=nil;
end;
Procedure add (Var q:qtype; x:tinfo);
Var p:Plist;
Begin
If MaxAvail < sizeOf(x)
then Writeln ('Error!')
else begin
New(p);
P^.info:=x;
p^.next:=nil;
If q.tail=nil
then q.head:=p
else q.tail^.next:=p;
q.tail:=p;
end;
end;
Function Rem (Var q:qtype):TInfo;
Var p:PList;
Begin
If empty(q)
then write ('Error !')
else begin
New(p);
p:=q.head;
rem:=q.head^.info;
q.head:=q.head^.next;
dispose(p);
end;
end;
procedure print (l:PList);
var tmp:Qtype;
p:Plist;
begin
p:=l;
if p<>nil then begin
print(p^.next);
write(p^.info,' ');
end;
end;
Procedure Insert(Var q:qtype;var tmp:qtype);
Var
el,del : Tinfo;
i : integer;
begin
Write ('Введіть елемент, який потрібно вставити');
readln (el);
i:=0;
while (not empty(q)) do
begin
inc(i);
del:=rem(q);
if ((el > del) and (i=1)) or (el=del) then
begin
add(tmp,el);
add(tmp,del);
continue;
end;
if ((el < del) and (el > q.head^.info))
or ((el < del) and (empty(q)))then
begin
add(tmp,del);
add(tmp,el);
continue;
end
else
begin
add(tmp,del);
continue;
end;
end;
q:=tmp;
init(tmp);
end;
VAR
v:integer;
Q,tmp : Qtype;
el, code : integer;
filename : string;
f : text;
s : string[4];
b : boolean;
BEGIN
CLRSCR;
filename:='D:\home\ki-1\pascal\Lucky\FQueue.txt';
assign(f,filename);
reset(f);
init(q);
while (not eof(f)) do
begin
read(f,s);
val(s,el,code);
add(q,el);
end;
repeat
writeln;
writeln (' Menu');
writeln ('"1" – Показати чергу;');
writeln ('"2" – Вставити елемент;');
writeln ('"3" – Видалити елемент;');
writeln ('"0" – Вихід');
Write ('Ваш вибір: ');
readln (v);
Case V of 1: Print (q.head);
2: insert (q,tmp);
3: el:=rem(q);
0: break;
end;
until v=0;
END.
Висновок: на цій лабораторній роботі я розглянув структуру даних черга.