堆栈实现(通过嵌套类)

时间:2011-09-03 17:06:45

标签: class c++-cli stack nested-class

我不确定我是否正确理解这个课程是如何运作的。它是一个堆栈的例子。

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类如何确定它?

1 个答案:

答案 0 :(得分:1)

我认为你误解了这句话:

     Top = gcnew Item(obj, Top);

这意味着:

  • 使新项目成为堆栈的顶部(这最终是您想要的堆栈)
  • 将新商品的Next设置为之前的Top

所以通过致电Top->Next,您可以转到上一个项目(“Top下面的那个”