所以我有一个它允许的典型Push和Pop功能的堆栈。我很难绕过代码所有实际工作的方式。我在这里看过这篇文章, Picture/Diagram in the best answer显示列表如何被推送"向下,你指向最新的元素。我有一个
node* stack;
连接到结构"节点"
struct node
{
ItemType data;
node* next;
};
如何在下一个"节点*中添加推拉功能;" ?包裹我的头脑的困难部分是我将如何实际做到这一点。我知道它最初指向null,然后如果我要推2,4,6它将是6,4,2,#。掌握如何使用链表中的指针实际执行它会引发我的循环。我可以在没有指针的情况下做到这一点,但指针是什么让我。谢谢你的帮助,我真的想通过这个来解决这个问题。我来这里评论太快了。谢谢!
编辑1: 解决了 - 我的推动工作
编辑2: 我现在想要弹出。这是否意味着我必须将我的指针瞄准下一个值?我该如何处理旧的顶级节点?删除它,因为我新的'
答案 0 :(得分: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;
}
编辑:编辑完您的帖子后,我也编辑了我的帖子。
似乎指针堆栈是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;
}