我将在下面显示正在为我的堆栈实现我的pop方法的程序的一部分:
for (int i=0; i<10; i++) // pop 10 times
s1.Pop();
cout << "*pop 10 times\ns1=" << s1 << endl;
cout << "s1.Size()=" << s1.Size() << endl;
cout << "s1.IsEmpty()=" << ((s1.IsEmpty()) ? "T" : "F") << endl;
cout << "s1.IsFull()=" << ((s1.IsFull()) ? "T" : "F") << endl;
cout << "s1.Peek()=" << s1.Peek() << endl;
cout << endl;
现在我将展示这部分代码正在使用的pop方法
T Pop()
{
Node* temp = top;
if(IsEmpty())
{
return NULL;
}
top = temp->link;
return temp->data;
num_items--;
}
我得到的输出几乎是正确的,但其中一些是关闭的,我将显示我得到的输出:
我现在将显示预期的输出:
为了更清晰,我的列表的最大大小是30,由于某种原因我的num_items变量没有减少,我怀疑我需要一个循环来检查要减少的东西,但我不知道我应该使用什么。我试过了if(top != NULL){} //placing the rest of the code from Node* temp = top; to num_items--; into brackets
答案 0 :(得分:3)
return temp->data;
num_items--;
num_items--;
永远不会在return语句之后执行。
答案 1 :(得分:1)
在T Pop()
:
return temp->data;
num_items--;
返回后不会执行第二行。