Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
56
Добавлен:
10.05.2014
Размер:
2.23 Кб
Скачать
program queue_dynamic;
(*
(c) 2005 Dima Zolotukhin aka 'Zlogic' <zlogic@gmail.com>
Redistributable under GNU GPL license
*)

type
str_message = string[70];
node_pointer = ^node;
node = record
data:integer;
next:node_pointer;
end;

procedure print_menu;
begin
writeln;
writeln('<< Њ…Ќћ „€ЌЂЊ€—…‘ЉЋ‰ Ћ—…ђ…„€ >>');
writeln('1 „®Ў ўЁвм н«Ґ¬Ґ­в');
writeln('2 ‚лв йЁвм н«Ґ¬Ґ­в');
writeln('3 ‚л室');
end;

function get_int(message:str_message):integer;
var
response:integer;
begin
write(message,'> ');
readln(response);
get_int:=response;
end;

procedure queue_add(var head,tail:node_pointer;data_to_add:integer);
var
new_tail:node_pointer;
begin
new(new_tail);{ᮧ¤ Ґ¬ ­®ўл© н«Ґ¬Ґ­в}
new_tail^.data:=data_to_add;
new_tail^.next:=NIL;
if(tail<>NIL)then{Ґб«Ё еў®бв Ґбвм}
tail^.next:=new_tail;{гЄ §лў Ґ¬ ­  ­®ўл©}
tail:=new_tail;{¬Ґ­пҐ¬ Ї®Ё­вҐа ­  ­®ўл© н«Ґ¬Ґ­в}
if(head=NIL)then{Ґб«Ё Ј®«®ўл ­Ґв}
head:=tail;{Ј®«®ў  а ў­  еў®бвг}
end;

function queue_get(var head,tail:node_pointer;var data_out:integer):boolean;
var
old_head:node_pointer;
begin
if head<>NIL then{Ґб«Ё Ј®«®ў  ­ҐЇгбв®©}
begin
data_out:=head^.data;{Ї®«гз Ґ¬ §­ зҐ­ЁҐ}
old_head:=head;{г¤ «пҐ¬ н«Ґ¬Ґ­в}
head:=head^.next;
dispose(old_head);
queue_get:=true;
if(head=NIL)then{Ґб«Ё ⥯Ґам Ј®«®ў  Їгбв п}
tail:=NIL;{г­Ёз⮦ Ґ¬ ®бв вЄЁ еў®бв }
end
else{Ё­ зҐ}
queue_get:=false;{®иЁЎЄ }
end;

var
exit:boolean;
response:byte;
head,tail:node_pointer;
x:integer;
begin
exit:=false;
head:=NIL;
tail:=NIL;
while not exit do{Ї®Є  ­Ґ ­г¦­® ўл©вЁ}
begin
print_menu;{Ї®Є §лў Ґ¬ ¬Ґ­о}
response:=get_int('‚лЎҐаЁвҐ ў аЁ ­в');{зЁв Ґ¬ ®вўҐв Ї®«м§®ў вҐ«п}
writeln;
case response of
1:queue_add(head,tail,get_int('‚ўҐ¤ЁвҐ, зв® ¤®Ў ўЁвм ў ®зҐаҐ¤м'));{¤®Ў ў«Ґ­ЁҐ н«Ґ¬Ґ­в  ў ®зҐаҐ¤м}
2:begin
if queue_get(head,tail,x) then{Ґб«Ё ®зҐаҐ¤м ­ҐЇгбв п}
writeln('Џ®«г祭® Ё§ ®зҐаҐ¤Ё: ',x){ўлў®¤Ё¬ н«Ґ¬Ґ­в}
else{Ё­ зҐ}
writeln('<< Ћ—…ђ…„њ Џ“‘’Ђџ >>');{ўлў®¤Ё¬ error}
end;
3:exit:=true;{ўл室}
end;
end;
end.
Соседние файлы в папке 05