以下にいくつかのコードがあります。このコードは、誰かがスタックをプッシュ/ポップできるようにするためのテンプレートとして作成した基本的なプッシュ/ポップスタッククラスです。私には宿題があり、今やろうとしているのは、複数の値を持つスタックを作成することです。
したがって、基本的に3つの整数を送信でき、これらもプッシュ/ポップできるスタックを作成できるようにしたいと思います。私が探しているのは、これがどのように機能するかについての理論であり、誰かに宿題をしてもらうつもりはありません。
シナリオは、パーツを扱っているというものです。したがって、ユーザーはシリアル番号(int)、製造日(int)、およびlotnum(int)を入力します。だから私の質問は:
- 値を「ポップ」するとき、ポップ中に3つの値すべてを送信しようとするか、これを別の方法で処理する必要がありますか?
クラスなどの構造体を使用して新しいクラスを作成する必要がありますか?
/**************************************************************************** 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; }