type
Tinf = integer;
Tptr = ^Tlist;
Tlist = record
inf:Tinf;
next,prev:Tptr;
end;
var
A:Tptr;
procedure create_list (var L:Tptr );
var
e: Tinf;
p, new_p: tptr;
begin
p := nil; L := nil;
while not eoln do begin
read (e);
new_p := new(Tptr);
new_p^.prev := p;
new_p^.next := nil;
new_p^.inf := e;
if p <> nil then p^.next := new_p;
p := new_p;
if L = nil then L := p;
end;
readln ;
end;
function count (L:Tptr):integer;
var pl_1, pl_2: tptr; k:integer;
begin
k:=0;
L:=L^.next;
while (L <> nil) do
begin
pl_2 := L;
pl_1 := L;
pl_1:=pl_1^.next;
pl_2:=pl_2^.prev;
if pl_1^.inf = pl_2^.inf then
k:=k+1
else
L:=L^.next;
end;
count := k;
end;
{удаление списка}
Procedure ListDestroy(var L:Tptr);
var
p:Tptr;
begin
While L^.next <> Nil Do L:=L^.Next;
While L <> Nil Do
Begin
P:=L;
L:=L^.Prev;
Dispose(P);
End;
end;
begin {main}
write ('Введите элементы списка: ');
create_list(A);
writeln ('количество элементов списка, у которых равные соседи: ', count (A));
ListDestroy (A);
readln;
end.
Двусвязные списки [Pascal]
Подсчитать количество элементов списка, у которых равные соседи.
Код:
у меня функция count не работает... почему??? помогите, пожалуйста))))
Тут лишний else (я его закоментил)
Код:
function count (L:Tptr):integer;
var
pl_1, pl_2: tptr;
k:integer;
begin
k:=0;
L:=L^.next;
while (L <> nil) do begin
pl_2 := L;
pl_1 := L;
pl_1:=pl_1^.next;
pl_2:=pl_2^.prev;
if pl_1^.inf = pl_2^.inf then
k:=k+1;
{ else }
L:=L^.next;
end;
count := k;
end;
var
pl_1, pl_2: tptr;
k:integer;
begin
k:=0;
L:=L^.next;
while (L <> nil) do begin
pl_2 := L;
pl_1 := L;
pl_1:=pl_1^.next;
pl_2:=pl_2^.prev;
if pl_1^.inf = pl_2^.inf then
k:=k+1;
{ else }
L:=L^.next;
end;
count := k;
end;