Pop方法没有给出预期的输出

时间:2014-02-13 06:22:53

标签: c++ linked-list stack

我将在下面显示正在为我的堆栈实现我的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--;


    }

我得到的输出几乎是正确的,但其中一些是关闭的,我将显示我得到的输出:

enter image description here

我现在将显示预期的输出:

enter image description here

为了更清晰,我的列表的最大大小是30,由于某种原因我的num_items变量没有减少,我怀疑我需要一个循环来检查要减少的东西,但我不知道我应该使用什么。我试过了if(top != NULL){} //placing the rest of the code from Node* temp = top; to num_items--; into brackets

2 个答案:

答案 0 :(得分:3)

return temp->data;
num_items--;

num_items--;永远不会在return语句之后执行。

答案 1 :(得分:1)

T Pop()

return temp->data;
num_items--;

返回后不会执行第二行。