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

Struct Doublelinked List Node { Intdata; Double Linked listNode prev; Double Lin

ID: 3770272 • Letter: S

Question

Struct Doublelinked List Node { Intdata; Double Linked listNode prev; Double Linked listNode next; ); Assume that the data In the double linked list Is ordered In ascending order. Insert the parameter, value To lnsert. into the double linked Vist. keeping the double linked list In ascending order void Insertln Order{DoublelinkedlistNode & start,int value Toinsert} { Double Linked listNode temp; if (start = = null pr) temp = new Double Linked listNode temp right arrow next = start; temp right arrow prew = null point; start right arrow prev = temp;

Explanation / Answer

void insertInOrder(struct DoubleLinkedListNode ** start, int valueToInsert)
{
struct DoubleLinkedListNode* current;
struct DoubleLinkedListNode* new_node =(struct DoubleLinkedListNode*) malloc(sizeof(struct DoubleLinkedListNode));
new_node->data=valueToInsert;
new_node->next=new_node->prev=NULL;
/* Special case for the head end */
if (*start == NULL || (*start)->data >= new_node->data)
{
new_node->next = *start;
*start = new_node;
}
else
{
/* Locate the node before the point of insertion */
current = *start;
while (current->next!=NULL &&
current->next->data < new_node->data)
{
current = current->next;
}
new_node->next = current->next;
current->next = new_node;
}
}