主题:各位大虾帮帮忙
xpycc
[专家分:410] 发布于 2005-06-30 18:59:00
有谁知道怎样用连接实现插入排序法么?
知道的发上来,有急用~~~~~~~~~~~~~~~~~~~~~
加分多多~~~~~~~~~~~~~~~~~~~~
谢谢了~~~~~~~
回复列表 (共1个回复)
沙发
xpycc [专家分:410] 发布于 2005-06-30 19:10:00
不行的话看看下面的代码是否有错
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的
谢谢了~~~~~~~~~~~~~~~
我来回复