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;
}