Стек связанных списков C ++ с использованием указателей

0

Поэтому у меня есть стек с типичными функциями Push и Pop, которые он позволяет. Мне тяжело обертывать вокруг, как все это работает на основе кода. Я видел этот пост здесь, рисунок/диаграмму в лучшем ответе, который показывает, как список "толкается" вниз, и вы указываете на новейший элемент. у меня есть

node* stack;

который подключен к структурному "узлу",

struct node
{
    ItemType data;
    node* next;
};

Как включить push и pull с "node" next; " ? Трудная часть, чтобы обернуть мою голову, - это то, как я собираюсь это сделать. Я знаю, что изначально он указывает на нуль, а затем, если я должен нажать 2,4,6, это будет 6,4,2, #. Ухватить, как на самом деле делать это с указателями в связанном списке, бросает меня за цикл. Я могу сделать это без указателей, но указатели - это то, что мне нужно. Спасибо за любую помощь, я действительно хочу с этим справиться. Я здесь, чтобы прокомментировать слишком быстро. Благодарю!

РЕДАКТИРОВАТЬ 1: решено - мой толчок работает

РЕДАКТИРОВАТЬ 2: Я пытаюсь поп. Значит ли это, что мне нужно просто направить указатель на следующее значение? Что мне делать со старым верхним узлом? удалить его, так как я его новичок?

  • 2
    «Итак, у меня есть стек с типичными функциями Push и Pop, которые он позволяет», - похоже, у вас этого нет . Вы изучали распределение памяти, а также эту конкретную структуру данных? Вы знакомы со связанными списками?
  • 0
    @crashmstr извините, я имею в виду, я понимаю без указателей. Работая с указателями, мне трудно понять это
Показать ещё 7 комментариев
Теги:
list
pointers
stack

1 ответ

0
Лучший ответ

Это похоже на вопрос C.

Функции push могут быть определены в C++ следующим образом

void push( node * &stack, const ItemType &item )
{
    node *tmp = new node { item. stack };
    stack = tmp;
}

в C это может выглядеть

int push( struct node * *stack, const ItemType *item )
{
    node *tmp = malloc( sizeof( struct node ) );

    if ( tmp )
    {
        tmp->data = *item;
        tmp->next = *stack;

        *stack = tmp;
    }

    return tmp != NULL;
}

EDIT: после того как вы отредактировали свой пост, я также редактировал свой пост. Кажется, что стек указателя является членом данных класса StackClass. В этом случае функция-член может выглядеть так:

void StackClass::Push( ItemType newItem ) 
// I would declare the parameter as const ItemType &newItem 
{ 
    node* temp = new node;
    temp->data = newItem;
    temp->next = stack;

    stack = temp;
}
  • 0
    Привет. Мой учитель предоставил нам небольшой скелет, в котором наш метод push является функцией void только с одним параметром, который является ItemType newItem. Я включил код, который я написал в моей редакции № 1, в мой пост выше, если вы не против проверить его. Спасибо!
  • 0
    @SiggyxLeGiiT Смотрите мой обновленный пост.
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню