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

Implement the following function as a new function for the linked list toolkit.

ID: 3816355 • Letter: I

Question

Implement the following function as a new function for the linked list toolkit. (Use the usual node definition with member variables called data and link.)

bool is_on(const node* head_ptr, const node* p);

// Precondition: head_ptr is the head pointer of a linked list (which might be empty, or might be non-empty).

//The pointer p is a non-NULL pointer to some node on some linked list.

// Postcondition: The return value is true if p actually points to

// one of the nodes in the head_ptr's linked list. For example,

// p might point to the head node of this list, or the second node,

// or the third node, and so on. Otherwise the return value is

// false. None of the nodes on any lists are changed.

Explanation / Answer

please refer below code

//assuming node strucrure as below
struct node
{
int val;
struct node *next;
};
bool is_on(const node* head_ptr, const node* p)
{
node *travel = head_ptr;
if(head_ptr == NULL) //linked list empty
return false;
  
else
{
//travelling linked list and checking address of node pointer with p
while(travel != NULL)
{
if(travel == p)
return true;
  
travel = travel->next;
}
}
//if p is not matching with any of the node
return false;
}