سلام دوست عزیز .
خوب من تا حالا برای همه توضیح میدادم که بدونن چی به چی هست و قدم به قدم گفتم
حالا :
ادغام 2 لیست مراتب شده .
Procedure Merge(var x,z:alist; l,m,n:integer);
var
i,j,k,t:integer;
begin
i:=l; k:=l; j:=m+1;
while ((i<=m) and (j<=n)) do
begin
if x[i].key <=x[j].key then begin
z[k]:=x[i];
i:=i+1;
end
else begin
z[k]:=x[j];
j:=j+1;
end;
k:=k+1;
end; {end of while)
if i > m then for t:=j to n do z[k+t-j]:=x[t]
else
for t:=i do m do z[k+t-i]:=x[t];
end; {end of merge}
توضیحات
if i>m then یعنی (Zk,.....,Zn):=(Xj,....,Xn)
این البته الگوریتم هست دیگه خودت بهتر میفهمی که چی به چی هست ولی خاطرت جمع باشه که کد صحیح هست.