我不确定我是否正确理解这个课程是如何运作的。它是一个堆栈的例子。
ref class Stack
{
private:
ref struct Item // Defines items to store in the stack
{
Object^ Obj; // Handle for the object in this item
Item^ Next; // Handle for next item in the stack or nullptr
Item(Object^ obj, Item^ next): Obj(obj), Next(next){} // Constructor
};
Item^ Top; // Handle for item that is at the top
public:
void Push(Object^ obj) // Push an object onto the stack
{
Top = gcnew Item(obj, Top); // Create new item and make it the top
}
Object^ Pop() // Pop an object off the stack
{
if(Top == nullptr) // If the stack is empty
return nullptr; // return nullptr
Object^ obj = Top->Obj; // Get object from item
Top = Top->Next; // Make next item the top
return obj;
}
};
我无法弄清楚Push函数究竟是如何工作的。在类定义中Top=gcnew Item(obj, Top)
所以基本上它表示Top
等于Next
。那么如果Stack
类始终是堆栈顶部的那个,Next
类如何确定它?
答案 0 :(得分:1)
我认为你误解了这句话:
Top = gcnew Item(obj, Top);
这意味着:
Next
设置为之前的Top 所以通过致电Top->Next
,您可以转到上一个项目(“Top
下面的那个”