回 帖 发 新 帖 刷新版面

主题:各位大虾帮帮忙

有谁知道怎样用连接实现插入排序法么?

知道的发上来,有急用~~~~~~~~~~~~~~~~~~~~~

加分多多~~~~~~~~~~~~~~~~~~~~

                             谢谢了~~~~~~~

回复列表 (共1个回复)

沙发

不行的话看看下面的代码是否有错

program lian;
type
  pt=^node;
  node=record              {声明记录体}
     value:integer;
     next:pt;
    end;
var
  x:integer;
  p,q,h,k,y:pt;
procedure create(var head:pt);     {建表}
  begin
    new(head);
    writeln('Create');
    p:=head;
    readln(x);
    while x<>0 do
    begin
      new(q);
      q^.value:=x;
      p^.next:=q;
      p:=q;
      read(x);
    end;
    p^.next:=nil;
  end;
procedure print(head:pt);           {打印}
  begin
    writeln('print');
    p:=head;
    while p^.next<>nil do
    begin
      writeln(p^.next^.value);
      p:=p^.next;
    end;
  end;
begin
  create(h);
  k:=h;             {比较指针(就是抓起的那张牌)}
  y:=h;             {前趋指针,因为没用双向链表,所以就只好这样了}
  while k^.next<>nil do
  begin
    p:=h^.next;
    k:=k^.next;
    while (k^.value>p^.value)and(k<>p) do p:=p^.next;  {插入前定位}
    if k^.next<>p^.next then               {若需要插入,则~~~~~~}
    begin
      y^.next:=k^.next^.next;              {把牌抽出}
      k^.next:=p^.next^.next;              {这两句把牌插入新位置}
      p^.next:=k;
    end;
    y:=y^.next;                            {前趋后移一位}
  end;
  print(h);                                {打印}
  readln
end.

              如果要发源码,最好是Pascal的
                                
                                             谢谢了~~~~~~~~~~~~~~~

我来回复

您尚未登录,请登录后再回复。点此登录或注册