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
Students have asked these similar questions
The images I have uploaded are the part 1 to 4 and questions below are continue on the questions uploaded 5. C++ Class Template with Method Stubs #pragma once #include <iostream> #include <string> #include <stdexcept> #include <vector>   template <typename T> class HashTable { private:     struct Entry {         std::string key;         T value;         bool isOccupied;         bool isDeleted;         Entry() : key(""), value(), isOccupied(false), isDeleted(false) {}     };       Entry* table;     size_t capacity;     size_t size;     double loadFactorThreshold;           size_t customHash(const std::string& key) const {         size_t hash = 5381;         for (char c : key) {             hash = ((hash  <<  5) + hash)  +  c;         }         return hash;     }       size_t probe(const std::string& key, bool forInsert = false) const;     void resize();   public:     // Constructor     HashTable(size_t initialCapacity = 101);         // Big…
this project is NOT for graded(marks) purposes, please help me with the introduction. give me answers for the project. i will include an image explaining everything about the project.
Java Graphics (Bonus In this lab, we'll be practicing what we learned about GUIs, and Mouse events. You will need to implement the following: A GUI with a drawing panel. We can click in this panel, and you will capture those clicks as a Point (see java.awt.Point) in a PointCollection class (you need to build this). The points need to be represented by circles. Below the drawing panel, you will need 5 buttons: O о о ○ An input button to register your mouse to the drawing panel. A show button to paint the points in your collection on the drawing panel. A button to shift all the points to the left by 50 pixels. The x position of the points is not allowed to go below zero. Another button to shift all the points to the right 50 pixels. " The x position of the points cannot go further than the You can implement this GUI in any way you choose. I suggest using the BorderLayout for a panel containing the buttons, and a GridLayout to hold the drawing panel and button panels. Regardless of how…
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.
Similar questions
SEE MORE QUESTIONS
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