这里是我的功能,我的pop功能需要什么参数?
template <class KeyType >
KeyType * Stack<KeyType>::Pop(KeyType& x) {
if (IsEmpty()) { //isempty is just a bool function
StackEmpty(); //just prints out that stack is empty
return 0; //bad coding breaking out of the function
}
x = stack[top--]; //stack is a pointer to an array, top is the top of the stack
return &x;
}
我的问题是: 我不知道如何做到这一点的主要被调用。据我的理解,一个弹出功能应该没有选择弹出堆栈的选项。 LIFO对吗?主要问题是Keytype & x参数的确切含义以及如何在main中调用它? (在这种情况下,KeyType被初始化为KeyType *在这个特定的程序中堆栈一个int)。
实际上,Stack的Pop方法不应该接受任何参数,因为它总是返回堆栈中最顶层的元素,因为它是一个后进先出的数据结构。 我认为你的Pop方法会返回一个指向Stack顶端元素的指针以及值本身;第一个作为返回值,后者通过引用传递。 – Rami
它实际上不是一个堆栈,它是一个使用类的堆栈的实现,可能应该放在那里的某个地方,但是这是在一个教师给我们的头文件中,所以我假设它是可行的。我一直在辩论是否只是删除一段时间的参数大声笑。 – Phenom