
Explanation of Solution
- 1. The mid and last of the circular linked list is stored using tortoise and hare algorithm.
- 2. Make the second half circular.
- 3. Make the first half circular.
- 4. Set the head (or start) pointer of the two linked lists.
Program code:
//include the required header files
#include<stdio.h>
#include<stdlib.h>
Using namespace std;
// structure for a node
struct Node
{
int data;
struct Node *next;
};
/* Function to split a list (starting with head) into two lists.
head1_ref and head2_ref are references to head nodes of
the two resultant linked lists */
void splitList(struct Node *head, struct Node **head1_ref,
struct Node **head2_ref)
{
struct Node *slow_ptr = head;
struct Node *fast_ptr = head;
if(head == NULL)
return;
/* If there are odd nodes in the circular list then
fast_ptr->next becomes head and for even nodes
fast_ptr->next->next becomes head */
while(fast_ptr->next != head &&
fast_ptr->next->next != head)
{
fast_ptr = fast_ptr->next->next;
slow_ptr = slow_ptr->next;
}
// If there are even elements in list then move fast_ptr
if(fast_ptr->next->next == head)
fast_ptr = fast_ptr->next;
// Set the head pointer of first half
*head1_ref = head;
// Set the head pointer of second half
if(head->next != head)
*head2_ref = slow_ptr->next;
// Make second half circular
fast_ptr->next = slow_ptr->next;
//Make first half circular
slow_ptr->next = head;
}
// Function to insert a node at the beginning of a Circular linked list
void push(struct Node **head_ref, int data)
{
struct Node *ptr1 = (struct Node *)malloc(sizeof(struct Node));
struct Node *temp = *head_ref;
ptr1->data = data;
ptr1->next = *head_ref;
// If linked list is not NULL then set the next of last node
if(*head_ref != NULL)
{
while(temp->next != *head_ref)
temp = temp->next;
temp->next = ptr1;
}
else
/*For the first node */
ptr1->next = ptr1;
*head_ref = ptr1;
}
// Function to print nodes in a given Circular linked list
void printList(struct Node *head)
{

Want to see the full answer?
Check out a sample textbook solution
Chapter 3 Solutions
Data structures and algorithms in C++
- 史》 Mark for Review Which of the following could be printed as a result of executing this code segment? 8:15 O 912 10 7 15 11arrow_forward3 Mark for Review Which of the following best describes the value assigned to b when the code segment is executed? A random integer between 0 and a1, inclusive A random integer between a and 2 a, inclusive A random integer between a and 2 a 1, inclusivearrow_forwardMark for Review Every year a student is chosen at random to win a prize. The first part of this selection involves choosing which class will be selected. You are asked to write the code to select a student, from grades 9-12, inclusive, and you are to assume there is an equal probability for each to occur. The following incomplete statement appears in a program that computes the value of the random number chosen. int year = /* missing code */; Which of the following replacements for /* missing code */ would best simulate the selection of a grade from 9-12? (int)(Math.random() * 13) Ⓑ (int)(Math.random()*9)+4 (int)(Math.random() * 4) +9 (int)(Math.random()*419 A B Undoarrow_forward
- 4 Mark for Review Assume that the following variable declarations have been made. double d = Math.random(); double r; Which of the following assigns a value to r from the uniform distribution over the range 0.5 ≤r < 5.5 ? B r = d + 0.5; (C) r = d + 0.5 * 5.0; D r = d 5.0%; r = d 5.0+ 0.5; Barrow_forwardWhich of the following statements assigns a random integer between 25 and 60, inclusive, to rn? int rn= (int) (Math.random() * 25) + 36%;B B int rn = (int) (Math.random() * 25) + 60; int rn= (int) (Math.random() * 36) + 25; int rn= (int) (Math.random() * 60) + 25;arrow_forwardThe programming assignment is called "Ignoring Comments" Provide the full C++ codearrow_forward
- Only provide the answers for these questionsarrow_forwardCan you please use Excel formulas to build your decision tree if that's possiblearrow_forwardTech Distributors is implementing biometric authentication at all entry points to increase security at their scientific laboratories. Discuss the challenges of using biometric authentication.arrow_forward
- Database System ConceptsComputer ScienceISBN:9780078022159Author:Abraham Silberschatz Professor, Henry F. Korth, S. SudarshanPublisher:McGraw-Hill EducationStarting Out with Python (4th Edition)Computer ScienceISBN:9780134444321Author:Tony GaddisPublisher:PEARSONDigital Fundamentals (11th Edition)Computer ScienceISBN:9780132737968Author:Thomas L. FloydPublisher:PEARSON
- C How to Program (8th Edition)Computer ScienceISBN:9780133976892Author:Paul J. Deitel, Harvey DeitelPublisher:PEARSONDatabase Systems: Design, Implementation, & Manag...Computer ScienceISBN:9781337627900Author:Carlos Coronel, Steven MorrisPublisher:Cengage LearningProgrammable Logic ControllersComputer ScienceISBN:9780073373843Author:Frank D. PetruzellaPublisher:McGraw-Hill Education





