newtail:=(Q.tail mod MaxN) + 1; в программе очереди с помощью массива? Пожалуйста, подскажите. В faqe у вас только очередь в дин памяти. Мне нужно, чтобы очередь заполнялась полностью, а не оставляла одно звено. Программа по работе с очередями-добавление и удаление. Сама программа:
Код
program ochered_mas;
const
MaxN=100;
type
Telem=integer;
Telements=array[1..MaxN]of Telem;
TQueue=record
Elements:Telements;
Head:integer;
Tail:integer
end;
procedure InitQueue(var Q:TQueue);
begin
Q.Head:=1;
Q.tail:=1;
end;
procedure PushQ(var Q:Tqueue;E:Telem;var c:boolean);
var
newtail:integer;
begin
newtail:=(Q.tail mod MaxN) + 1;
with Q do
if newtail<>head then
begin
tail:=newtail;
elements[tail]:=E;
c:=true;
end
else
c:=false;
end;
procedure popQ(var Q:tQueue;E:Telem;var c:boolean);
begin
if (Q.head<>Q.tail) then
begin
with Q do
begin
E:=Elements[head];
head:=(Head mod MaxN)+1;
end;
end;
end;
var
Q:Tqueue;
number:integer;
E:telem;
c:boolean;
begin
InitQueue(Q);
repeat
writeln('1:Push');
writeln('2:Pop');
writeln('3:Exit');
writeln('Vvedite luboy nomer.');
readln(number);
case number of
1:
begin
writeln('Vvedite chislo dlya dobavleniya.');
readln(E);
pushQ(Q,E,c);
end;
2:
begin
writeln('Vvedite chislo dlya izvlecheniya.');
readln(E);
PopQ(Q,E,c);
writeln('izvlechonnoye chislo= ',E);
end;
end;
if (Q.head=Q.tail) then
writeln('Ochered pusta');
until number=3
end.