队列的实现(pascal语言)
先是在unit中定义结构和实现过程:
unit linked;
interface
type
queueptr=^queuenode;
queuenode=record
data:real;
next:queueptr;
end;
linkedquetp=record
front,rear:queueptr;
end;
procedure init_linkedque(var q:linkedquetp);
procedure en_linkedque(var q:linkedquetp;x:real);
procedure dl_linkedque(var q:linkedquetp);
procedure output(var q:linkedquetp);
implementation
procedure init_linkedque(var q:linkedquetp);
begin
new(q.front);
q.rear:=q.front;
q.front^.next:=nil;
end;
procedure en_linkedque(var q:linkedquetp;x:real);
var
p:queueptr;
begin
new(p);
p^.data:=x;
p^.next:=nil; //新的尾结点
q.rear^.next:=p;
q.rear:=p; //插入队尾
end;
procedure dl_linkedque(var q:linkedquetp);
var
s:queueptr;
x:real;
begin
if q.front=q.rear then writeln('NULL') else
begin
s:=q.front^.next;
q.front^.next:=s^.next; //删去队头元素,第一个结点为头结点,不可删
if s^.next=nil then q.rear:=q.front;
x:=s^.data;
dispose(s);
writeln(x);
end;
end;
procedure output(var q:linkedquetp);
var
last:queueptr;
begin
last:=q.front;
while last^.next<>nil do
begin
write(last^.data:6:1);
last^.next:=last^.next^.next;
end;
writeln;
end;
end.
然后试图在主程序中调用:
program Queue;
{$APPTYPE CONSOLE}
uses
SysUtils,
linked in 'linked.pas';
var
qu:linkedquetp;
begin
{ TODO -oUser -cConsole Main : Insert code here }
init_linkedque(qu);
en_linkedque(qu,7);
output(qu);
dl_linkedque(qu);
output(qu);
readln;
readln;
end.
但出错了,不知为何?