单链表的数据类型可定义如下: type dlb=^node; node=record data:datatype; next:dlb; end; 例1 连续输入一序列整数,组成链表(并以动态的形式把它们记录下来),当输入的数为-1时,停止输入,然后把输入的整数按相反的顺序输出. programlianbiao;
type link=^data;
data=record
num:integer;
next:link;
end;
var p,q:link;
i:integer;
begin
q:=nil;
readln(i);
while i<>-1 do begin new(p);
with p^ do
begin
num:=i;
next:=q;
end;
q:=p;
readln(i); end;
while p<>nil do
begin
write(p^.num:6);
p:=p^.next;
end;
readln;
end. 练习:将例1中如果数据不按现反的顺序(按输入时的顺序)输出时,怎样建表.( 程序) 上述建表方式其实就是分别从表头和表尾插入元素,下面是从表中插入元素; 例2:输入若干整数(输入32767停止输入)排序(小到大)输出之。 programlianbiao;
type link=^data;
data=record
num:integer;
next:link;
end;
var head,p,q,r:link;
i:integer;
begin
head:=nil;
readln(i);
while i<>32767 do
begin
new(p);
p^.num:=i;
p^.next:=nil;
if head=nil then begin head:=p;end
else
begin
q:=head;
if p^.num<q^.num then beginhead:=p;p^.next:=q end else
begin
while (p^.num >=q^.num) and(q<>nil) do begin r:=q ;q:=q^.next;end;
if q=nil then r^.next:=p else beginr^.next:=p;p^.next:=q end
end;
end;
readln(i);
end;
p:=head;
while p<>nil do
begin
write(p^.num:6);
p:=p^.next;
end;
readln;
end.
|