for
我的pushTop功能正常但每次我尝试输入一个奇数时我都会收到此错误
第18行中的“线程1:EXC_BAD_ACCESS(代码= 1,地址= 0x8)” “myBottom-> next = new Staque :: Node(value);”
我正在尝试将一个整数添加到链表中。偶数位于顶部,奇数位于列表底部。
答案 0 :(得分:0)
很难判断这是您提供的代码中唯一的问题,但您还需要在myBottom
方法中设置pushTop(...)
。如果您不这样做,则empty()
可能会显示为false,但在调用myBottom
时pushBottom(...)
无效。
这样的事情:
//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++;
}
}