线程1:EXC_BAD_ACCESS(代码= 1,地址= 0x8)

时间:2017-10-31 23:21:17

标签: c++

for

我的pushTop功能正常但每次我尝试输入一个奇数时我都会收到此错误

  

第18行中的“线程1:EXC_BAD_ACCESS(代码= 1,地址= 0x8)”   “myBottom-> next = new Staque :: Node(value);”

我正在尝试将一个整数添加到链表中。偶数位于顶部,奇数位于列表底部。

1 个答案:

答案 0 :(得分:0)

很难判断这是您提供的代码中唯一的问题,但您还需要在myBottom方法中设置pushTop(...)。如果您不这样做,则empty()可能会显示为false,但在调用myBottompushBottom(...)无效。

这样的事情:

//Definition of pushTop()
void Staque::pushTop(const StaqueElement & value)
{
    myTop = new Staque::Node(value, myTop);
    if (empty())
        myBottom = myTop;
    count++;
}

另请注意,我认为您还需要修改myBottom(...),因为如果在堆栈为空时调用它会添加两个元素:

//Definition of pushBottom()
void Staque::pushBottom(const StaqueElement & value)
{
    if (empty())
    {
        myBottom = new Staque::Node(value);
        myTop->next = myBottom;
        count++;
    }
    else
    {
        myBottom->next = new Staque::Node(value);
        myBottom = myBottom->next;
        count++;
    }
}

替代方案可能是:

//Definition of pushBottom()
void Staque::pushBottom(const StaqueElement & value)
{
    if (empty())
        pushTop(value);
    else
    {
        myBottom->next = new Staque::Node(value);
        myBottom = myBottom->next;
        count++;
    }
}