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

In this file you will write two functions called sum and count. Both functions w

ID: 3759115 • Letter: I

Question

In this file you will write two functions called sum and count. Both functions will take in a pointer to a linked list node. The function sum will return the sum of the integers found in the linked list. The function countwill return the number of integers found in the linked list.

For example, if your linked list contains the integers

The sum function would return the value 34 and the count function would return 6.

For this assignment you will need the files below

Here is a run of the driver if you implement your function correctly

If one of your functions does not work then you will see output similar to

if you can help me please write the code in c not c++ or java

Explanation / Answer

#include<stdio.h>

#include<stdlib.h>

/* Link list node */

struct node

{

  int data;

  struct node* next;

};

/* Function to get the counts of node in a linked list */

int getCount(struct node* head);

/* function to get the intersection point of two linked

   lists head1 and head2 where head1 has d more nodes than

   head2 */

int _getIntesectionNode(int d, struct node* head1, struct node* head2);

/* function to get the intersection point of two linked

   lists head1 and head2 */

int getIntesectionNode(struct node* head1, struct node* head2)

{

  int c1 = getCount(head1);

  int c2 = getCount(head2);

  int d;

  if(c1 > c2)

  {

    d = c1 - c2;

    return _getIntesectionNode(d, head1, head2);

  }

  else

  {

    d = c2 - c1;

    return _getIntesectionNode(d, head2, head1);

  }

}

/* function to get the intersection point of two linked

   lists head1 and head2 where head1 has d more nodes than

   head2 */

int _getIntesectionNode(int d, struct node* head1, struct node* head2)

{

  int i;

  struct node* current1 = head1;

  struct node* current2 = head2;

  for(i = 0; i < d; i++)

  {

    if(current1 == NULL)

    { return -1; }

    current1 = current1->next;

  }

  while(current1 != NULL && current2 != NULL)

  {

    if(current1 == current2)

      return current1->data;

    current1= current1->next;

    current2= current2->next;

  }

  return -1;

}

/* Takes head pointer of the linked list and

   returns the count of nodes in the list */

int getCount(struct node* head)

{

  struct node* current = head;

  int count = 0;

  while (current != NULL)

  {

    count++;

    current = current->next;

  }

  return count;

}

/* IGNORE THE BELOW LINES OF CODE. THESE LINES

   ARE JUST TO QUICKLY TEST THE ABOVE FUNCTION */

int main()

{

  /*

    Create two linked lists

    1st 3->6->9->15->30

    2nd 10->15->30

    15 is the intersection point

  */

  struct node* newNode;

  struct node* head1 =

            (struct node*) malloc(sizeof(struct node));

  head1->data = 10;

  struct node* head2 =

            (struct node*) malloc(sizeof(struct node));

  head2->data = 3;

  newNode = (struct node*) malloc (sizeof(struct node));

  newNode->data = 6;

  head2->next = newNode;

  newNode = (struct node*) malloc (sizeof(struct node));

  newNode->data = 9;

  head2->next->next = newNode;

  newNode = (struct node*) malloc (sizeof(struct node));

  newNode->data = 15;

  head1->next = newNode;

  head2->next->next->next = newNode;

  newNode = (struct node*) malloc (sizeof(struct node));

  newNode->data = 30;

  head1->next->next= newNode;

  head1->next->next->next = NULL;

  printf(" The node of intersection is %d ",

          getIntesectionNode(head1, head2));

  getchar();

}

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