Показать сообщение отдельно
Старый 23.09.2011, 11:18   #3
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений
(для 5,323 пользователей)
Ответ: Стек на базе одностороннего связного стека

На C# по описанию ffinder'a:
public class LinkedStack<T>
{
    private class 
LinkedStackItem<T>
    {

        public 
LinkedStackItem(T item, LinkedStackItem<T> parent)
        {
            
Value = item;
            
Parent = parent;
        }

        public 
T Value { get; private set; }

        public 
LinkedStackItem<T> Parent { get; private set; }
    }

    private 
LinkedStackItem<T> _current;
    public 
int Count { get; private set; }

    public 
void Push(T item)
    {
        
_current = new LinkedStackItem<T>(item, _current);
        
Count++;
    }

    public 
T Pop()
    {
        if (
Count > 0)
        {
            
T val = _current.Value;
            
Count--;
            
_current = _current.Parent;
            return 
val;
        }

        throw new 
InvalidOperationException("В стеке отсутствуют элементы!");
    }

    public 
T Peak()
    {
        if (
Count > 0)
        {
            return 
_current.Value;
        }

        throw new 
InvalidOperationException("В стеке отсутствуют элементы!");
    }

} 
__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием