classSolution{public:Node*insert(Node*head,intinsertVal){if(head==nullptr){Node*newNode=newNode(insertVal);newNode->next=newNode;returnnewNode;}Node*prev=head;Node*curr=head->next;while(curr!=head){// Case 1: min <= insertVal <= max// Case 2: insertVal >= max or insertVal <= minif((prev->val<=insertVal&&insertVal<=curr->val)||(prev->val>curr->val&&// Prev is max, curr is min(insertVal>=prev->val||insertVal<=curr->val))){// Insert the node between prev and currprev->next=newNode(insertVal,curr);returnhead;}prev=prev->next;curr=curr->next;}// All vals in the list are identicalprev->next=newNode(insertVal,curr);returnhead;}};
classSolution{publicNodeinsert(Nodehead,intinsertVal){if(head==null){NodenewNode=newNode(insertVal);newNode.next=newNode;returnnewNode;}Nodeprev=head;Nodecurr=head.next;while(curr!=head){// Case 1: min <= insertVal <= max// Case 2: insertVal >= max or insertVal <= minif((prev.val<=insertVal&&insertVal<=curr.val)||(prev.val>curr.val&&// Prev is max, curr is min(insertVal>=prev.val||insertVal<=curr.val))){// Insert the node between prev and currprev.next=newNode(insertVal,curr);returnhead;}prev=prev.next;curr=curr.next;}// All vals in list are identicalprev.next=newNode(insertVal,curr);returnhead;}}