Data structures and algorithms in C++
Data structures and algorithms in C++
2nd Edition
ISBN: 9780470460443
Author: Goodrich
Publisher: WILEY
bartleby

Concept explainers

Expert Solution & Answer
Book Icon
Chapter 3, Problem 17R

Explanation of Solution

Program code:

//include the required header files

#include <stdio.h>

#include <stdlib.h>

//Basic structure of node

struct node

{

//structure members

int data;

struct node * next;

};

// Function declaration

void createList(struct node **head, int n);

void displayList(struct node *head);

int  count(struct node *head);

//define the main() function

int main()

{

//declare the required variables

int n, choice;

//set the head as null

struct node *head = NULL;

//iterate a while loop

while(choice != 0)

{

//prompt the choices

printf("--------------------------------------------\n");

printf("        CIRCULAR LINKED LIST PROGRAM        \n");

printf("--------------------------------------------\n");

printf("1. Create List\n");

printf("2. Display list\n");

printf("3. Count nodes\n");

printf("0. Exit\n");

printf("--------------------------------------------\n");

//prompt the user to enter the choice

printf("Enter your choice : ");

//scan for the value

scanf("%d", &choice);

//switch cases

switch(choice)

{

//if the choice is 1

case 1:

//prompt the user to enter the number of nodes to create

printf("Enter total node to create: ");

//scan for the value

scanf("%d", &n);

//call the method createList()

createList(&head, n);

//break the case

break;

//if the choice is 2

case 2:

//call the method displayList()

displayList(head);

// Hold screen

getchar();

getchar();

//break the case

break;

case 3:

//print the number of nodes

printf("Total nodes = %d\n", count(head));

// Hold screen

getchar();

getchar();

//break the case

break;

case 0:

//print the statement

printf("Exiting from application");

exit(0);

//break from the loop

break;

default:

//print the statement

printf("Error! Invalid choice. Please choose between 0-3");

}

//print new line

printf("\n\n\n\n\n");

}

//return

return 0;

}

//define the function count()

int count(struct node *head)

{

//declare the required variables

int total = 0;

struct node *current = head;

// Iterate till end of list

do

{

//set the value of current

current = current->next;

//increment the total by 1

total++;

    //end condition

} while (current != head);

// Return total nodes in list

return total;

}

//define the function createList()

void createList(struct node **head, int n)

{

//declare the required variables

int i, data;

struct node *prevNode, *newNode;

//set the nodes

prevNode = NULL;

newNode  = NULL;

// Creates and links rest of the n-1 nodes

for(i=1; i<=n; i++)

{

// Create a new node

newNode = (struct node *) malloc(sizeof(struct node));

//prompt the user to enter the data

printf("Enter data of %d node: ", i);

//scan for the values

scanf("%d", &data);

//set the nodes

newNode->data = data;

newNode->next = NULL;

// Link the previous node with newly created node

if (prevNode != NULL)

prevNode->next = newNode;

// Move the previous node ahead

prevNode = newNode;

// Link head node if not linked

if (*head == NULL)

*head = newNode;

}

// Link last node with first node

prevNode->next = *head;

//print the statement

printf("\nCIRCULAR LINKED LIST CREATED SUCCESSFULLY\n");

}

// Display node content of circular linked list

void displayList(struct node *head)

{

//set the values

struct node *current;

int n = 1;

// Nothing to print in list

if(head == NULL)

{

//print the statement

printf("List is empty...

Blurred answer
Knowledge Booster
Background pattern image
Computer Science
Learn more about
Need a deep-dive on the concept behind this application? Look no further. Learn more about this topic, computer-science and related others by exploring similar questions and additional content below.
Recommended textbooks for you
Text book image
Database System Concepts
Computer Science
ISBN:9780078022159
Author:Abraham Silberschatz Professor, Henry F. Korth, S. Sudarshan
Publisher:McGraw-Hill Education
Text book image
Starting Out with Python (4th Edition)
Computer Science
ISBN:9780134444321
Author:Tony Gaddis
Publisher:PEARSON
Text book image
Digital Fundamentals (11th Edition)
Computer Science
ISBN:9780132737968
Author:Thomas L. Floyd
Publisher:PEARSON
Text book image
C How to Program (8th Edition)
Computer Science
ISBN:9780133976892
Author:Paul J. Deitel, Harvey Deitel
Publisher:PEARSON
Text book image
Database Systems: Design, Implementation, & Manag...
Computer Science
ISBN:9781337627900
Author:Carlos Coronel, Steven Morris
Publisher:Cengage Learning
Text book image
Programmable Logic Controllers
Computer Science
ISBN:9780073373843
Author:Frank D. Petruzella
Publisher:McGraw-Hill Education