Вот реализация всех действий с очередью:
Program ochered;
Uses crt;
Type spd = ^Tspd;
Tspd = record
data:string;
next,last:spd;
end;
Var op:integer;
stek, stek1,stek2:spd;
st0,st1,st2:spd;
data:string;
procedure add(var sp,st:spd; data:string);
var temp:spd;
begin
new(temp);
temp^.data:=data;
temp^.next:=nil;
if sp = nil
then
begin
temp^.last:=nil;
sp:=temp;
st:=sp;
end
else
begin
temp^.last:=st;
st^.next:=temp;
st:=temp;
end;
end;
procedure view(sp:spd);
begin
if sp = nil
then
writeln('ochered pysta');
while sp<>nil do
begin
write(sp^.data,' ');
sp:=sp^.next;
end;
end;
function proverka(sp:spd):boolean;
begin
if sp = nil
then
proverka:=false
else
proverka:=true;
end;
function del(var sp, st:spd):string;
var temp:spd;
begin
if sp = nil
then
begin
writeln('Error: ochered pysta ');
readkey;
exit;
end;
del:=sp^.data;
temp:=sp;
sp:=sp^.next;
if sp = nil
then
st:=nil;
dispose(temp);
end;
procedure clear(var sp, st:spd);
var temp:spd;
begin clrscr;
while sp<>nil do
begin
temp:=sp;
sp:=sp^.next;
dispose(temp);
end;
st:=nil;
end;
function read_the_first_element(sp:spd):string;
var a:string;
begin
a:=sp^.data;
read_the_first_element:=a;
end;
function read_the_last_element(st:spd):string;
var a:string;
begin
a:=st^.data;
read_the_last_element:=a;
end;
begin
st0:=nil;
repeat
clrscr;
writeln;
writeln('1-add element');
writeln('2-del element');
writeln('3-view ochered');
writeln('4-clear ochered');
writeln('5-read_1_element');
writeln('6-read_posledn.element');
writeln;
writeln('0-exit');
readln(op);
case op of
1:begin
clrscr;
write('vvedite znachenie dobavl. elementa ');
readln(data);
clrscr;
add(stek, st0, data);
writeln;
writeln('element dobavlen');
writeln;
writeln('vasha ochered ');
writeln;
view(stek);
writeln;
writeln;
writeln('najmite klavishy');
readkey;
end;
2:begin
clrscr;
if proverka(stek) then
begin
writeln(' element ', del(stek, st0),' udalen ');
writeln;
writeln('vasha ochered');
writeln;
view(stek);
writeln;
writeln;
writeln('najmite klavishy');
readkey;
end else
begin
writeln('ydalenie ne vozmojno - ochered pysta');
writeln;
writeln;
writeln('najmite klavishy');
readkey;
end;
end;
3: begin
clrscr;
writeln;
writeln('vasha ochered');
writeln;
view(stek);
writeln;
writeln;
writeln('najmite klavishy');
readkey;
end;
4:begin
clear(stek, st0);
writeln('vasha ochered ochishena');
writeln;
writeln;
writeln('najmite klavishy');
readkey;
end;
5:begin
clrscr;
writeln;
writeln(''prochten. pervyu element');
writeln;
writeln(read_the_first_element(stek));
writeln;
writeln('vasha ochered');
writeln;
view(stek);
writeln;
writeln;
writeln('najmite klavishy');
readkey;
end;
6:begin
clrscr;
writeln;
writeln('prochten. posled element');
writeln;
writeln(read_the_last_element(st0));
writeln;
writeln('vasha ochered');
writeln;
view(stek);
writeln;
writeln;
writeln('najmite klavishy');
readkey;
end;
0:begin
exit;
end;
end;
until op=0;
end.
Хочу встроить в данную программу, эти 2 маленькие задачки, вызывая их в основной программе.
1.Пусть уже построена очередь Q, содержащая целые числа. Вычислить сумму и произведение элементов, находящихся в очереди.
2.Пусть уже построена очередь Q, содержащая целые числа. Вычислить количество элементов очереди кратных 3.
Подскажите как реализовать эти програмки.