我在下面有一些代码。这段代码是一个基本的推送/弹出堆栈类,我创建它作为模板,使某人能够推送/弹出堆栈。我有一个家庭作业,我现在要做的是创建一个具有多个值的堆栈。
所以我希望能够创建一个基本上可以发送三个整数的堆栈,并且我也可以在其中推送/弹出这些整数。我正在寻找的是关于这应该如何工作的理论,我并不是想找人为我做功课。
场景是我们正在处理零件。所以用户将输入序列号(int),制造日期(int)和lotnum(int)。所以我的问题是:
- 当我“弹出”该值时,我应该尝试在弹出期间发送所有三个值还是以另一种方式处理?
我应该尝试使用类或其他结构之类的结构创建一个新类吗?
/**************************************************************************** Inventory class. Chad Peppers This class creates a object for stacking nodes In addition, there should be member functions to perform the following operations: - Push to the stack - Pop to the stack - Function to check if empty ****************************************************************************/ // Specification file for the DynIntStack class template <class T> class Inventory { private: // Structure for stack nodes struct StackNode { T value; // Value in the node StackNode *next; // Pointer to the next node }; StackNode *top; // Pointer to the stack top public: // Constructor Inventory() { top = NULL; } // Destructor ~Inventory(); // Stack operations void push(T); void pop(T &); bool isEmpty(); }; /************************************************************************* Basic class constructor. Input Parameters: Information to build the stack Return Type: void *************************************************************************/ template<class T> Inventory<T>::~Inventory() { StackNode *nodePtr, *nextNode; // Position nodePtr at the top of the stack. nodePtr = top; // Traverse the list deleting each node. while (nodePtr != NULL) { nextNode = nodePtr->next; delete nodePtr; nodePtr = nextNode; } } /************************************************************************* Function to push an item in the stack Input Parameters: T Return Type: void *************************************************************************/ template<class T> void Inventory<T>::push(T num) { StackNode *newNode; // Pointer to a new node // Allocate a new node and store num there. newNode = new StackNode; newNode->value = num; // If there are no nodes in the list // make newNode the first node. if (isEmpty()) { top = newNode; newNode->next = NULL; } else // Otherwise, insert NewNode before top. { newNode->next = top; top = newNode; } } /************************************************************************* Function to pop an item in the stack Input Parameters: T Return Type: void *************************************************************************/ template<class T> void Inventory<T>::pop(T &num) { StackNode *temp; // Temporary pointer // First make sure the stack isn't empty. if (isEmpty()) { cout << "The stack is empty.\n"; } else // pop value off top of stack { num = top->value; temp = top->next; delete top; top = temp; } } /************************************************************************* Basic class deconstructor. Input Parameters: None Return Type: void *************************************************************************/ template<class T> bool Inventory<T>::isEmpty() { bool status; if (!top) status = true; else status = false; return status; }