Поэтому у меня есть стек с типичными функциями Push и Pop, которые он позволяет. Мне тяжело обертывать вокруг, как все это работает на основе кода. Я видел этот пост здесь, рисунок/диаграмму в лучшем ответе, который показывает, как список "толкается" вниз, и вы указываете на новейший элемент. у меня есть
node* stack;
который подключен к структурному "узлу",
struct node
{
ItemType data;
node* next;
};
Как включить push и pull с "node" next; " ? Трудная часть, чтобы обернуть мою голову, - это то, как я собираюсь это сделать. Я знаю, что изначально он указывает на нуль, а затем, если я должен нажать 2,4,6, это будет 6,4,2, #. Ухватить, как на самом деле делать это с указателями в связанном списке, бросает меня за цикл. Я могу сделать это без указателей, но указатели - это то, что мне нужно. Спасибо за любую помощь, я действительно хочу с этим справиться. Я здесь, чтобы прокомментировать слишком быстро. Благодарю!
РЕДАКТИРОВАТЬ 1: решено - мой толчок работает
РЕДАКТИРОВАТЬ 2: Я пытаюсь поп. Значит ли это, что мне нужно просто направить указатель на следующее значение? Что мне делать со старым верхним узлом? удалить его, так как я его новичок?
Это похоже на вопрос 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;
}