单链表

[复制链接]
发表于 2023-12-22 17:51:14 | 显示全部楼层 |阅读模式
单链表的数据类型可定义如下:
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.

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表