Показать сообщение отдельно
  #6  
Старый 25.02.2010, 23:15
Asinkrit Asinkrit вне форума
Местный
 
Регистрация: 29.10.2009
Сообщения: 446
Репутация: 271
По умолчанию

Цитата:
Сообщение от AlexSku
Не смотрел всю программу, но по-моему эта вещь нехорошая:
Код:
Procedure In_stak(Var Beg:Stack; Sim:integer);
Var x:Stack;
Begin
    New(X);
    X^.inf:=Sim;
    X^.next:=Beg;
->    Beg:=X;
End;
Переменная Х - локальная и по завершении процедуры уничтожается автоматически, так что после выхода Beg будет указывать на мусор. Лучше Х объявлять как глобальную переменную или поле какого-нибудь объекта.

Во первых, x должна быть ссылкой на какой либо тип, в данном случае на элемент стека,
во вторых, переменные созданные методом New, не уничтожаются, после выхода из процедуры, к их уничтожению необходим метод Dispose();
А сама процедура явно написано неверено, так как все добавляемые элементы привязываются к первому.
А автору вопроса, советую почитать теорию, так как, пока не придет понимания работы стэка и очереди, писать код не имеет смысла.
Ответить с цитированием