Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

Using C++ Finish the program so that it finds and prints the smallest value in t

ID: 3583926 • Letter: U

Question

Using C++

Finish the program so that it finds and prints the smallest value in the linked list.

#include <iostream>

#include <cstdlib>

using namespace std;

class IntNode {

public:

   IntNode(int dataInit = 0, IntNode* nextLoc = 0);

   void InsertAfter(IntNode* nodePtr);

   IntNode* GetNext();

   void PrintNodeData();

   int GetDataVal();

private:

   int dataVal;

   IntNode* nextNodePtr;

};

// Constructor

IntNode::IntNode(int dataInit, IntNode* nextLoc) {

   this->dataVal = dataInit;

   this->nextNodePtr = nextLoc;

   return;

}

/* Insert node after this node.

* Before: this -- next

* After: this -- node -- next

*/

void IntNode::InsertAfter(IntNode* nodeLoc) {

   IntNode* tmpNext = 0;

  

   tmpNext = this->nextNodePtr;    // Remember next

   this->nextNodePtr = nodeLoc;    // this -- node -- ?

   nodeLoc->nextNodePtr = tmpNext; // this -- node -- next

   return;

}

// Print dataVal

void IntNode::PrintNodeData() {

   cout << this->dataVal << endl;

   return;

}

// Grab location pointed by nextNodePtr

IntNode* IntNode::GetNext() {

   return this->nextNodePtr;

}

int IntNode::GetDataVal() {

   return this->dataVal;

}

int main() {

   IntNode* headObj = 0; // Create intNode objects

   IntNode* currObj = 0;

   IntNode* lastObj = 0;

   int i = 0;            // Loop index

  

   headObj = new IntNode(-1);        // Front of nodes list

   lastObj = headObj;

  

   for (i = 0; i < 20; ++i) {        // Append 20 rand nums

      currObj = new IntNode(rand());

     

      lastObj->InsertAfter(currObj); // Append curr

      lastObj = currObj;             // Curr is the new last item

   }

  

   currObj = headObj;                // Print the list

   currObj = currObj->GetNext();

   while (currObj != 0) {

      currObj->PrintNodeData();

      currObj = currObj->GetNext();

   }

   // FIXME: Loop through list and find minimum dataVal

  

   return 0;

}

Explanation / Answer

Please find the required code along with its output. Please find the comments against each line for explanation.

#include <iostream>
#include <cstdlib>
using namespace std;

class IntNode {
public:
IntNode(int dataInit = 0, IntNode* nextLoc = 0);
void InsertAfter(IntNode* nodePtr);
IntNode* GetNext();
void PrintNodeData();
int GetDataVal();
private:
int dataVal;
IntNode* nextNodePtr;
};

// Constructor
IntNode::IntNode(int dataInit, IntNode* nextLoc) {
this->dataVal = dataInit;
this->nextNodePtr = nextLoc;
return;
}

/* Insert node after this node.
* Before: this -- next
* After: this -- node -- next
*/
void IntNode::InsertAfter(IntNode* nodeLoc) {
IntNode* tmpNext = 0;
  
tmpNext = this->nextNodePtr; // Remember next
this->nextNodePtr = nodeLoc; // this -- node -- ?
nodeLoc->nextNodePtr = tmpNext; // this -- node -- next
return;
}

// Print dataVal
void IntNode::PrintNodeData() {
cout << this->dataVal << endl;
return;
}

// Grab location pointed by nextNodePtr
IntNode* IntNode::GetNext() {
return this->nextNodePtr;
}

int IntNode::GetDataVal() {
return this->dataVal;
}

int main() {
IntNode* headObj = 0; // Create intNode objects
IntNode* currObj = 0;
IntNode* lastObj = 0;
int i = 0; // Loop index
int min; //declare a varibale to hold minimum list value

headObj = new IntNode(-1); // Front of nodes list
lastObj = headObj;
  
for (i = 0; i < 20; ++i) { // Append 20 rand nums
currObj = new IntNode(rand());

lastObj->InsertAfter(currObj); // Append curr
lastObj = currObj; // Curr is the new last item
}
  
currObj = headObj; // Print the list
currObj = currObj->GetNext();
while (currObj != 0) {
currObj->PrintNodeData();
currObj = currObj->GetNext();
}

// FIXME: Loop through list and find minimum dataVal

currObj = headObj;
currObj = currObj->GetNext();
min = currObj->GetDataVal(); // set first element in the list initialy as minimum
while (currObj != 0) { //iterate through the full list to find the minimum value
if(currObj->GetDataVal() < min ) //if the current nodes value is less than stored min value, then this nodes value is lowest
min = currObj->GetDataVal();
currObj = currObj->GetNext(); //go to next node
}

cout << " Minimum value in the list : " << min << endl;
  
return 0;
}

----------------------------------------------------------

OUTPUT:

Hire Me For All Your Tutoring Needs
Integrity-first tutoring: clear explanations, guidance, and feedback.
Drop an Email at
drjack9650@gmail.com
Chat Now And Get Quote