Задан текстовый файл. Распечатать все слова максимальной длинны (с использованием очереди)
Вот мой код, но он не работает
Пока глупости много=))
Код
type
TElem = string;
Tptr = ^Tlist;
Tlist = record
inf: Telem;
next: tptr;
end;
TQueue = record
head,
tail: Tptr;
end;
var q: TQueue; //очередь
f: text; m_s,max_s,name: string;
s:char; ok:boolean;
{инициализация очереди}
procedure queue_init (var q: Tqueue);
begin
q.head:=nil;
end;
{проверка на пустоту}
function queue_empty (var q: tqueue): boolean;
begin
queue_empty:=q.head=nil;
end;
{добавление в очередь}
procedure queue_push (var q: tqueue; var el: Telem);
var p: Tptr;
begin
new(p);
p^.inf:=el;
if queue_empty (q) then
q.head:=p
else
q.tail^.next:=p;
q.tail:=p;
end;
{изъятие из очереди}
function queue_pop (var q:Tqueue; var el:Telem): boolean;
var p: Tptr;
begin
if queue_empty (q) then queue_pop:=false
else
begin
queue_pop:=true;
el:=q.head^.inf;
p:=q.head;
q.head:=q.head^.next;
dispose(p);
end;
end;
begin{main}
writeln ('Введите имя файла (имя.txt)');
read(name);
assign(f, name);
reset(f);
queue_init(q);
{добавление в очередь}
while not eof(f) do
begin
m_s:='';
ok:=true;
while ok or eof(f) do
begin
read(f, s);
if s=' ' then ok:=false;
m_s:=m_s+s;
end;
if length(m_s)>=length(max_s) then
begin
max_s:=m_s;
queue_push(q, max_s);
end;
end;
readln;
close(f);
assign(f, 'out_text.txt');
rewrite(f);
while not queue_empty(q) do
begin
queue_pop (q,m_s);
if m_s=max_s then
write (f, m_s);
end;
close(f);
readln;
writeln('***********Обработка Завершена***********');
readln;
end.
Помогите исправить и довести решение...