помогите сделать комментарии, хотя бы краткие
Код:
uses crt;
type
pnode=^node;
node=record
data:integer;
next,prev:pnode;
end;
var
i,a,b,c:integer;
beg,first:pnode;
Label met;
procedure add(var beg:pnode; d:integer);
var
p,t:pnode;
begin
new(p);
p^.data:=d;
p^.next:=nil;
p^.prev:=nil;
if beg=nil then beg:=p
else
begin
t:=beg;
while t^.next<>nil do t:=t^.next;
t^.next:=p;
p^.prev:=t;
end;
end;
procedure print(beg:pnode);
var
p:pnode;
begin
p:=beg;
writeln;writeln('Список:');
while p<>nil do
begin
write(p^.data,' ');
p:=p^.next;
end;
writeln;
end;
procedure del_pos(var beg:pnode);
var
t:pnode;
begin
t:=beg;
while t^.next<>nil do t:=t^.next;
t^.prev^.next:=nil;
dispose(t);
end;
function del_n(var beg:pnode; n:integer):integer;
var
t:pnode;
j,flag:integer;
begin
t:=beg;
j:=1;
flag:=0;
while t<>nil do
begin
if j=n then
begin
t^.next^.prev:=t^.prev;
t^.prev^.next:=t^.next;
dispose(t);
flag:=1;
break;
end;
j:=j+1;
t:=t^.next;
end;
if flag=1 then del_n:=1 else del_n:=0;
end;
procedure svaz();
var
beg1,beg2,t:pnode;
j,c:integer;
begin
writeln('Список 1:');
for j:=1 to 6 do
begin
c:=random(100);
add(beg1,c);
write(c,' ');
end;
writeln;writeln('Список 2:');
for j:=1 to 4 do
begin
c:=random(100);
add(beg2,c);
write(c,' ');
end;
t:=beg1;
while t^.next<>nil do t:=t^.next;
t^.next:=beg2;
writeln;writeln('Связанный список:');
t:=beg1;
while t<>nil do
begin
write(t^.data,' ');
t:=t^.next;
end;
writeln;
end;
procedure sozd_ili();
var
beg1,beg2,beg3,t:pnode;
j,c,flag:integer;
begin
writeln('Список 1:');
for j:=1 to 10 do
begin
c:=random(100);
add(beg1,c);
write(c,' ');
end;
writeln;writeln('Список 2:');
for j:=1 to 10 do
begin
c:=random(100);
add(beg2,c);
write(c,' ');
end;
new(beg3);
beg3:=nil;
t:=beg3;
while beg1^.next<>nil do
begin
t:=beg3;
flag:=0;
while t<>nil do
begin
if t^.data=beg1^.data then flag:=1;
end;
if flag=0 then
if beg3=nil then
begin
beg3:=beg1;
beg3^.next:=nil;
end
else
begin
t:=beg3;
while t^.next<>nil do t:=t^.next;
t^.next:=beg1;
t^.next^.prev:=t;
t:=t^.next;
end;
beg1:=beg1^.next;
end;
//t^.next:=beg2;
writeln;writeln('Полученный список:');
t:=beg3;
while t<>nil do
begin
write(t^.data,' ');
t:=t^.next;
end;
writeln;
end;
procedure del_vse(var beg:pnode);
var
t:pnode;
begin
while beg^.next<>nil do
begin
t:=beg;
beg:=beg^.next;
beg^.prev:=nil;
dispose(t);
end;
dispose(beg);
writeln('Список удален');
end;
function kol_el(beg:pnode):integer;
var
t:pnode;
kol:integer;
begin
t:=beg;
while t<>nil do
begin
kol:=kol+1;
t:=t^.next;
end;
kol_el:=kol;
end;
procedure insert(var beg:pnode; n,d:integer);
var
t,p:pnode;
j:integer;
begin
t:=beg;
while t<>nil do
begin
j:=j+1;
if j=n then
begin
new(p);
p^.data:=d;
p^.next:=t^.next;
p^.prev:=t;
t^.next:=p;
t^.next^.prev:=p;
break;
end;
t:=t^.next;
end;
end;
procedure del2(var beg:pnode);
var
t,p:pnode;
j:integer;
begin
t:=beg;
while t<>nil do
begin
j:=j+1;
if j mod 2=0 then
begin
p:=t^.next;
writeln(t^.data);
if t^.next<>nil then
begin
t^.prev^.next:=t^.next;
t^.next^.prev:=t^.prev;
end
else t^.prev^.next:=nil;
dispose(t);
t:=p;
end
else t:=t^.next;
end;
end;
function sum(beg:pnode):integer;
var
t:pnode;
s:integer;
begin
t:=beg;
while t<>nil do
begin
s:=s+t^.data;
t:=t^.next;
end;
sum:=s;
end;
procedure perem(var beg:pnode; k,n:integer);
var
t,p:pnode;
j:integer;
begin
t:=beg;
j:=0;
while t<>nil do
begin
j:=j+1;
if j=k then
begin
if j=1 then
begin
p:=beg;
beg:=beg^.next;
beg^.prev:=nil;
end
else
begin
p:=t;
t^.prev^.next:=t^.next;
t^.next^.prev:=t^.prev;
end;
end;
if j=n then
begin
write('--');
p^.next:=t^.next;
p^.prev:=t;
t^.next:=p;
t^.next^.prev:=p;
write('--');
break;
end;
t:=t^.next;
end;
end;
procedure sort(var beg : pnode);
var
l,p:pnode;
buf: integer;
begin
l:=beg;
while l^.next<> nil do
begin
p:=l^.next;
while p<>nil do
begin
if l^.data>p^.data then
begin
buf:=l^.data;
l^.data:=p^.data;
p^.data:=buf;
end;
p:=p^.next;
end;
l:=l^.next;
end;
end;
procedure cop(var beg:pnode);
var
t,p,first,g:pnode;
begin
new(first);
first:=beg;
t:=beg;
p:=first;
t:=t^.next;
while t<>nil do
begin
new(g);
g:=t;
p^.next:=g;
p:=p^.next;
t:=t^.next;
end;
print(first);
end;
procedure invert(beg:pnode);
var
t:pnode;
begin
t:=beg;
while t^.next<>nil do t:=t^.next;
writeln;writeln('Инвертированый cписок:');
while t<>nil do
begin
write(t^.data,' ');
t:=t^.prev;
end;
end;
function IntersectSorted(): pnode;
var
pCurItem: pnode;
p1, p2, beg1, beg2: pnode;
j:integer;
begin
writeln('Список 1:');
for j:=1 to 10 do
begin
c:=random(100);
add(beg1,c);
write(c,' ');
end;
writeln;writeln('Список 2:');
for j:=1 to 10 do
begin
c:=random(100);
add(beg2,c);
write(c,' ');
end;
p1 := beg1;
p2 := beg2;
if p1^.data <= p2^.data then
begin
pCurItem := p1;
p1 := p1^.Next;
end
else begin
pCurItem := p2;
p2 := p2^.Next;
end;
Result := pCurItem;
while (p1 <> nil) and (p2 <> nil) do
begin
if p1^.data <= p2^.data then
begin
pCurItem^.Next := p1;
pCurItem := p1;
p1 := p1^.Next;
end
else begin
pCurItem^.Next := p2;
pCurItem := p2;
p2 := p2^.Next;
end;
end;
if p1 <> nil then
pCurItem^.Next := p1
else
pCurItem^.Next := p2;
print(pCurItem);
end;
Begin
for i:=1 to 5 do add(beg,random(100));
End.