使用指针的C ++链表列表

时间:2014-11-10 19:16:01

标签: c++ list pointers stack

所以我有一个它允许的典型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: 我现在想要弹出。这是否意味着我必须将我的指针瞄准下一个值?我该如何处理旧的顶级节点?删除它,因为我新的'

1 个答案:

答案 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;
}