Please explain why the answer is what is is thoroughly. I am trying to study for
ID: 3827647 • Letter: P
Question
Please explain why the answer is what is is thoroughly. I am trying to study for my test. I will make sure to thumbs up! thank you very much for your time
12. The following function is supposed to insert a new node into its proper place in an ordered list, returning a pointer to the first node in the modified list. Which of the following functions will work correctly in all cases? Assume that the node structure is defined as: struct node int value; struct node next a. struct node *insert into ordered list (struct node list, struct node new node struct node *cur list, *prev NULL; while (new node- value cur- value) prev Cur cur cur next new node- next Cur prev next new node return list; struct node insert into ordered list (struct node list struct node *new node) struct node Cur prev for (cur list prev NULL curr NULL 66 new node- value cur value prev Cur cur cur next if (prev NULL) prev next new node new node- next Cur return list; else return new nodeExplanation / Answer
Answer is d.
Lets analyse all option,
In A we are not checking cur before accessing value and it can cause null pointer issue,
in B , if element to be inserted is first element then its returning only new node causing other list to disappear and hence a memory leak
in C, we are using next of prev without checking prev can be null thus causing null pointer exception
in D we are correctly traversing to a node such that prev is either null or node which is just smaller than given node and cur is greater than give node, thus cur should be next of given node,
Now if prev was null thus insertion at head, it is currectly returning head, if insertion is in between it is correctly pointing nodes and returning original head.