Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Двусвязные списки [Pascal]

13K
25 ноября 2007 года
*alt
36 / / 12.04.2007
Задача.
Подсчитать количество элементов списка, у которых равные соседи.
Код:
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.


у меня функция count не работает... почему??? помогите, пожалуйста))))
1.9K
26 ноября 2007 года
max_dark
256 / / 11.11.2005
Получается бесконечный цикл
Тут лишний 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;
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог