1. Заголовок темы должен быть информативным. В противном случае тема удаляется ... 2. Все тексты программ должны помещаться в теги [code=pas] ... [/code]. 3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали! 4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора). 5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM! 6. Одна тема - один вопрос (задача) 7.Проверяйте программы перед тем, как разместить их на форуме!!! 8.Спрашивайте и отвечайте четко и по существу!!!
Вот такая задача "Используя очередь, распечатать в заданной последовательности символов сначала все цифры, затем остальные символы".Короче проходим сначла один раз по очереди печатаем цифры,второй раз остальные символы....я знаю как реализовать это используя две очереди...подскажите как сделать с одной..если это вообще возможно...
program dgdfgdfg;
uses crt;
type
ref=^z;
z=record
next:ref;
el:char;
end;
inout=(in1,out);
FIFO=array[in1..out] of ref;
var order,order1:FIFO;a,h:char;q:ref;n,k,t:integer;
begin
clrscr;
new(order[in1]);
order[out]:=order[in1];
order[in1]^.next:=nil;
new(order1[in1]);
order1[out]:=order1[in1];
order1[in1]^.next:=nil;
repeat
readln(a);
new(q);
q^.next:=nil;
q^.el:=a;
order[in1]^.next:=q;
order[in1]:=q;
n:=n+1;
until a='.';
while k<>n dobegin
q:=order[out]^.next; h:=q^.el;
if h in ['0'..'9']
thenbeginwrite(' ',q^.el);
order[out]^.next:=q^.next;
if q^.next=nilthen order[in1]:=order[out];
dispose(q);
t:=t+1;
endelsebegin
order[out]^.next:=q^.next;
order1[in1]^.next:=q;
order1[in1]:=q;
end;
k:=k+1;
end;
k:=0;
while k<>n-t dobegin
q:=order1[out]^.next;
write(' ',q^.el);
order1[out]^.next:=q^.next;;
dispose(q);
k:=k+1;
end;
readkey;
end.