Вот такая задача "Используя очередь, распечатать в заданной последовательности символов сначала все цифры, затем остальные символы".Короче проходим сначла один раз по очереди печатаем цифры,второй раз остальные символы....я знаю как реализовать это используя две очереди...подскажите как сделать с одной..если это вообще возможно...
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 do begin q:=order[out]^.next; h:=q^.el; if h in ['0'..'9'] then begin write(' ',q^.el); order[out]^.next:=q^.next; if q^.next=nil then order[in1]:=order[out]; dispose(q); t:=t+1; end else begin order[out]^.next:=q^.next; order1[in1]^.next:=q; order1[in1]:=q;
end; k:=k+1;
end; k:=0; while k<>n-t do begin q:=order1[out]^.next; write(' ',q^.el); order1[out]^.next:=q^.next;; dispose(q); k:=k+1; end; readkey; end.
volvo
8.05.2006 5:29
А зачем тебе 2 очереди? Заталкивай все в одну (включая завершающую точку), потом когда надо распечатать вначале только цифры, а потом - все остальное - делай так:
Код
While Голова_Очереди <> '.' Do Begin
If Голова_Очереди In ['0' .. '9'] Then Begin WriteLn(Голова_Очереди); Удалить_Элемент_Из_Очереди End Else Перенести_Элемент_В_Хвост
End;
Тогда после этого прохода у тебя в очереди останутся только НЕ цифры, и второй проход - "пока очередь не пуста просто распечатывать ее содержимое"...
Гость
8.05.2006 21:36
Во вторую очередь я заталкиваю все не цифры....потому что у меня ума не хватает после того как я прошел очередь один раз и вывел цифры..пройти ту же самую очерь ещё раз и вывести то что там осталось....поэтому я вывожу элементы из другой второй очереди.....прохордя её тем самым первый раз......вот такие дела..
LUZER
8.05.2006 21:56
сори..не подписался....ты пишешь Else Перенести_Элемент_В_Хвост....как это сделать?
Гость
8.05.2006 22:20
Всё допёрло ...сделал одной очередью.....въехал как в хвост добавить не цифры.....спасибо чел что время потратил...удаляй тему на хрен...
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.