Z University of Guelph C x CIS 1500 F16 Meet with x G chegg
Solution
#include <stdio.h>
 #include <stdio.h>
 #include <stdlib.h>
 // Linked List contains integer type data value and link to next node
 typedef struct IntNode_struct {
 int dataVal;
 struct IntNode_struct* nextNodePtr;
 } IntNode;
 // Constructor will initialize new node with value dataInit and nextLocation
 void IntNode_Create(IntNode* thisNode, int dataInit, IntNode* nextLoc) {
 thisNode->dataVal = dataInit;
 thisNode->nextNodePtr = nextLoc;
 }
 /* Insert newNode after node.
 Before: thisNode -- next
 After: thisNode -- newNode -- next
 */
 void IntNode_InsertAfter(IntNode* thisNode, IntNode* newNode) {
 IntNode* tmpNext = NULL;
 tmpNext = thisNode->nextNodePtr; // Remember next
 thisNode->nextNodePtr = newNode; // this -- new -- ?
 newNode->nextNodePtr = tmpNext; // this -- new -- next
 }
 // Grab location pointed by nextNodePtr
 IntNode* IntNode_GetNext(IntNode* thisNode) {
 return thisNode->nextNodePtr;
 }
 // Get Data Value for current node
 int IntNode_GetDataVal(IntNode* thisNode) {
 return thisNode->dataVal;
 }
 int main(void) {
 IntNode* headObj = NULL; // Create intNode objects
 IntNode* currObj = NULL;
 IntNode* lastObj = NULL;
 int i = 0; // Loop index
 int negativeCntr = 0; // negative counter - counts negative value
 headObj = (IntNode*)malloc(sizeof(IntNode)); // Front of nodes list
 IntNode_Create(headObj, -1, NULL);
 lastObj = headObj;
 for (i = 0; i < 10; ++i) { // Append 10 rand nums
 currObj = (IntNode*)malloc(sizeof(IntNode));
 IntNode_Create(currObj, (rand() % 21) - 10, NULL);
 IntNode_InsertAfter(lastObj, currObj); // Append curr
 lastObj = currObj; // Curr is the new last item
 }
 currObj = headObj; // Print the list
 while (currObj != NULL) {
 printf(\"%d, \", IntNode_GetDataVal(currObj));
 currObj = IntNode_GetNext(currObj);
 }
 printf(\"n\");
 currObj = headObj; // Count number of negative numbers
 while (currObj != NULL) {
 /* Check currObj node value is negative IntNode_GetDataVal method returns value of node */
 if(IntNode_GetDataVal(currObj) < 0){
     negativeCntr++; // Increement counter negativeCntr when currObj value is negative
 }
 currObj = IntNode_GetNext(currObj);
 }
 printf(\"Number of negatives: %dn\", negativeCntr);
 return 0;
 }


