я описывал вот так:
type
PNode = ^Node;
Node = record
Info:Char;
Next:PNode;
end;
TQueue = class
private
head,tail:PNode;
public
function Empty:Boolean;
procedure Push (Value:Char);
procedure Pop (var Value:Char);
constructor Create;
destructor Destroy; override;
end;
а надо дописать
L,R :PNode;
ну, левый и правый указатель
Пожалста объясните зачем в очереди хвосту и голове 2 указателя и помогите с реализацией
получается нам не хватает одного указателя? у меня просто и с одним работало, препода уже месяца нету а завтра зачёт
я вот как реализовывал с одним указателем
procedure TQueue.Push (Value:Char);
var P:PNode;
begin
new(P);
p^.info:=value;
p^.next:=nil;
if empty then head:=p
else tail^.next := p;
tail:=p;
end;
procedure TQueue.Pop (var Value:Char);
var P:PNode;
begin
if not Empty then
begin
value:=head^.info;
p:=head;
head:=p^.next;
if head=nil then tail:=nil;
dispose(p);
end;
end;
... а с двумя просто на нил сводил один из них
procedure TQueue.Push (Value:Char);
var P:PNode;
begin
new(P);
p.info:=value;
if empty then
begin
head:=p;
p.next:=nil;
end
else
begin
tail.R := p;
p.next:=tail;
end;
tail:=p;
end;
procedure TQueue.Pop (var Value:Char);
var P:PNode;
begin
if not Empty then
begin
value:=p.info;
p:=head;
head:=p.next;
if head=nil then tail:=nil;
dispose(p);
end;
end;
помогите плз