Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование в широком смысле слова > Алгоритмика

Алгоритмика Об алгоритмах вообще; методы, обсуждения способов решения

Ответ
 
Опции темы
Старый 22.09.2011, 22:19   #1
foldel
Оператор ЭВМ
 
Аватар для foldel
 
Регистрация: 18.11.2010
Сообщений: 23
Написано 0 полезных сообщений
(для 0 пользователей)
Стек на базе одностороннего связного стека

Кто может дать пример реализации стека на базе одностороннего связного стека?
(Offline)
 
Ответить с цитированием
Старый 22.09.2011, 22:53   #2
ffinder
Дэвелопер
 
Аватар для ffinder
 
Регистрация: 10.09.2007
Сообщений: 1,442
Написано 793 полезных сообщений
(для 1,460 пользователей)
Ответ: Стек на базе одностороннего связного стека

какая может быть реализация? два метода: push и pop
красота такого стека в том, что предидущие элементы ничего не знают о последующих, и самого стека как структуры тоже фактически нет.
необходимо знать только верхушку стека (последний добавленный элемент).
т.е. элемент стека состоит из двух полей, собственно данных и указателя на предидущий элемент. самый первый элемент в указывает на null.
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
pax (23.09.2011)
Старый 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 itemLinkedStackItem<Tparent)
        {
            
Value item;
            
Parent parent;
        }

        public 
T Value get; private set; }

        public 
LinkedStackItem<TParent 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)
 
Ответить с цитированием
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Часовой пояс GMT +4, время: 08:31.


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com