|
#1
|
|||
|
|||
Pascal. Стеки
Привет Всем !
Воник такой вопрос, Как понять стек с неизменным указателем вершины, и как его можно реализовать ? Спасибо) |
#2
|
|||
|
|||
А стек он всегда и есть с постоянным указателем вершины.
Стек - это очередь типа FILO. Реализуется на любом списковом классе, да хоть на массиве. Суть стека в том, что в каком порядке ты теда засовываешь данные, то в таком же и вынимаешь. Например, для типа Integer реализация стека будет примерно такая: Код:
type TIntStack = class private FItems : TList; public constructor Create; destructor Destroy; override; procedure Push(AItem : Integer); function Pop : Integer; end; constructor TIntStack.Create; begin inherited; FItems := TList.Create; end; destructor TIntStack.Destroy; begin FItems.Free; inherited; end; procedure TIntStack.Push(AData : Integer); begin FItems.Insert(0,Pointer(AData)); end; function TIntStack.Pop : Integer; begin If FItems.Count = 0 Then Raise Exception.Create('Stack is empty'); Result := Integer(FItems[0]); FItems.Delte(0); end; 1. Могут быть опечатки, т.к. писал здесь. 2. Специально сделал для отдельного типа. Если надо - переделай для типа Variant. |
#3
|
|||
|
|||
Или тебе надо на связанных списках сделать? Очень уж нехочется возиться с указателями. Принцип примерно такой же, тем более, что все равно для удобства пользования надо оборачивать все в класс, а тогда детали реализации не так важны.
|
#4
|
|||
|
|||
Да задача сделать это в паскале))
Но кажется я уже нашел пример, спасибо тебе |