Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Реализация стека, базирующегося на структуре, двунаправленного списка 
:(
    Опции темы
Metalex
Дата 7.4.2010, 22:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 635
Регистрация: 22.10.2008
Где: Украина-ZPсity

Репутация: нет
Всего: нет



Скажите, пожалуйста, какой смысл в реализации стека на основе структуры двунаправленного списка?
Ведь однонаправленного с головой хватает.


--------------------
Don't let the system get you down.
PM WWW ICQ Skype   Вверх
jonie
Дата 8.4.2010, 00:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 5613
Регистрация: 21.8.2005
Где: Владимир

Репутация: 15
Всего: 118



а где вы такое видели?


--------------------
Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет...
PM MAIL Jabber   Вверх
djamshud
Дата 8.4.2010, 00:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Пердупержденный
***


Профиль
Группа: Завсегдатай
Сообщений: 1655
Регистрация: 23.11.2009

Репутация: 8
Всего: 39



Я тоже использую стек на основе двусвязного списка... Не вижу ничего криминального. Я дошел до этого очень просто: уже был готовый список, вокруг него за минуту состряпал обвязку из класса и трех методов и вуаля, стек готов. На небольшой оверхед наплевать - использую в некритичных с точки зрения производительности местах.


--------------------
'Cuz I never walk away from what I know is right
Alice Cooper - Freedom
PM   Вверх
Metalex
Дата 8.4.2010, 09:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 635
Регистрация: 22.10.2008
Где: Украина-ZPсity

Репутация: нет
Всего: нет



djamshud, я просто не вьеду, зачем использовать двусвязный? В чем преимущество?


--------------------
Don't let the system get you down.
PM WWW ICQ Skype   Вверх
djamshud
Дата 8.4.2010, 11:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Пердупержденный
***


Профиль
Группа: Завсегдатай
Сообщений: 1655
Регистрация: 23.11.2009

Репутация: 8
Всего: 39



Никакого преимущества и даже чуть-чуть недостатка есть. В моем случае причина - отсутствие односвязного списка, а про какой стек говорите вы, никто так и не понял.


--------------------
'Cuz I never walk away from what I know is right
Alice Cooper - Freedom
PM   Вверх
Metalex
Дата 8.4.2010, 11:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 635
Регистрация: 22.10.2008
Где: Украина-ZPсity

Репутация: нет
Всего: нет



Код

#include <iostream>
using namespace std;

class Node
{
public:
    int d;
    Node *next;
    Node (int dat=0)
    {
        d=dat;
        next=0;
    }
};

class Stack
{
    Node *top;
public:
    Stack()
    {
        top=0;
    }
    ~Stack();
    void push (int d);
    void print ();
    void rock ();
    int num ();
};

Stack::~Stack()
{
    if (top)
    {
        Node *pv=top;
        while (pv)
        {
            pv=pv->next;
            delete top;
            top=pv;
        }
    }
}

void Stack::push(int d)
{
    Node *pv = new Node (d);
    if (!top)
    {
        top=pv;
    }
    else
    {
        pv->next=top;
        top=pv;
    }
}

void Stack::print()
{
    Node *pv=top;
    cout<<"Stack: "<<endl;
    while (pv)
    {
        cout<<pv->d<<" ";
        pv=pv->next;
    }
    cout<<endl;
}

void Stack::rock()
{
    Node *pv=top;
    cout<<"Top element: "<<pv->d<<endl;
    pv=pv->next;
    delete top;
    top=pv;
}

int Stack::num ()
{
    Node *pv=top;
    int n=0;
    cout<<"Number of elements of stack: ";
    while (pv)
    {
        n++;
        pv=pv->next;
    }
    return n;
}

void main ()
{
    Stack S;
    S.push(1);
    S.push(2);
    S.push(0);
    S.print();
    cout<<S.num()<<endl;
    S.rock();
    cout<<S.num()<<endl;
    system ("Pause");
}


Добавлено через 1 минуту и 45 секунд
Вот это стек на основе односвязного списка


--------------------
Don't let the system get you down.
PM WWW ICQ Skype   Вверх
mes
Дата 8.4.2010, 12:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 144
Всего: 250



Цитата(Metalex @  8.4.2010,  10:38 Найти цитируемый пост)
Вот это стек на основе односвязного списка 

даже при готовке своих велосипедов, желательно придерживаться общепринятых стандартных правил, и в частности в области соблюдения именования интерфейса..
Вот для ориентировки, какими методами должен обладать стек, для удобной и привычной работы :
http://cplusplus.com/reference/stl/stack/

тем более раз не просто сами пользуетесь, но и другим показываете smile



--------------------
PM MAIL WWW   Вверх
Metalex
Дата 8.4.2010, 15:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 635
Регистрация: 22.10.2008
Где: Украина-ZPсity

Репутация: нет
Всего: нет



mes, благодарю, но я спрашивал о другом..


--------------------
Don't let the system get you down.
PM WWW ICQ Skype   Вверх
mes
Дата 8.4.2010, 15:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 144
Всего: 250



Цитата(Metalex @  8.4.2010,  14:02 Найти цитируемый пост)
но я спрашивал о другом.. 

на другое имхо ответ уже дан.. 



--------------------
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.3255 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.