1: // Additions to the header file:
3: // Fills the vector bagContents with the data in the nodes of
4: // the linked chain to which curPtr points.
5: void fillVector(vector<ItemType>& bagContents, Node<ItemType>* curPtr) const;
7: // Locates a given entry within this bag.
8: // Returns either a pointer to the node containing a given entry or
9: // the null pointer if the entry is not in the bag.
10: Node<ItemType>* getPointerTo(const ItemType& target,
11: Node<ItemType>* curPtr) const;
14: // Additions to the implementation file:
17: template<class ItemType>
18: void LinkedBag<ItemType>::fillVector(vector<ItemType>& bagContents,
19: Node<ItemType>* curPtr) const
20: {
21: if (curPtr != nullptr)
22: {
23: bagContents.push_back(curPtr->getItem());
24: fillVector(bagContents, curPtr->getNext());
25: } // end if
26: } // end fillVector
28: // Returns either a pointer to the node containing a given entry or
29: // the null pointer if the entry is not in the bag.
30: template<class ItemType>
31: Node<ItemType>* LinkedBag<ItemType>::getPointerTo(const ItemType& target,
32: Node<ItemType>* curPtr) const
33: {
34: Node<ItemType>* result = nullptr;
35: if (curPtr != nullptr)
36: {
37: if (target== curPtr->getItem())
38: result = curPtr;
39: else
40: result = getPointerTo(target, curPtr->getNext());
41: } // end if
42:
43: return result;
44: } // end getPointerTo