![]()  | 
	
 
  | 
| 
		 
			 
			#1  
			
			
			
			
		 
		
		
	 | 
|||
		
		
  | 
|||
| 
	
	
		
			
			 Привет Всем ! 
		
	
		
		
		
		
		
	
		
		
	
	
	Воник такой вопрос, Как понять стек с неизменным указателем вершины, и как его можно реализовать ? Спасибо)  | 
| 
		 
			 
			#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  
			
			
			
			
		 
		
		
	 | 
|||
		
		
  | 
|||
| 
	
	
		
			
			 Да задача сделать это в паскале)) 
		
	
		
		
		
		
		
	
		
		
	
	
	Но кажется я уже нашел пример, спасибо тебе  |