Question
Replaced the circular linked list in the attached Josephus Problem solution with a queue. below is the code that needs modification source.cpp //This program tests
Replaced the circular linked list in the attached Josephus Problem solution with a queue.
below is the code that needs modification
source.cpp
//This program tests various operation of a linked list //34 62 21 90 66 53 88 24 10 #include
void show(unorderedCircularLinkedList
int main() { unorderedCircularLinkedList
load(victims); show(victims); unorderedCircularLinkedList
unorderedCircularLinkedList.h
#pragma once
//*********************************************************** // Author: D.S. Malik // // This class specifies the members to implement the basic // properties of an unordered circularlinked list. This class is // derived from the class circularLinkedListType. //***********************************************************
#include "circularLinkedList.h"
using namespace std;
template
void insertFirst(const Type& newItem); //Function to insert newItem at the beginning of the list. //Postcondition: first points to the new list, newItem is // inserted at the beginning of the list, last points to // the last node, and count is incremented by 1. //
void insertLast(const Type& newItem); //Function to insert newItem at the end of the list. //Postcondition: first points to the new list, newItem is // inserted at the end of the list, last points to the // last node, and count is incremented by 1.
void deleteNode(const Type& deleteItem); //Function to delete deleteItem from the list. //Postcondition: If found, the node containing deleteItem // is deleted from the list. first points to the first // node, last points to the last node of the updated // list, and count is decremented by 1. };
template
current = first; //set current to point to the first node in the list while (current != last && !found) //search the list if (current->info == searchItem) //searchItem is found found = true; else current = current->link; //make current point to the next node return found; ; }//end search
template
template
template
if (first == NULL) //Case 1; the list is empty. cout << "Cannot delete from an empty list." << endl; else { if (first->info == deleteItem) //Case 2 { current = first; count--; if (first->link == first) //the list has only one node { first = NULL; last = NULL; } else if (first->link == last) //the list has two nodes { first = first->link; first->link = first; last = first; } else { first = first->link; last->link = first; } delete current; } else //search the list for the node with the given info { found = false; trailCurrent = first; //set trailCurrent to point to the first node current = first->link; //set current to point to the second node while (current != first && !found) if (current->info != deleteItem) { trailCurrent = current; current = current-> link; } else found = true; if (found) //Case 3; if found, delete the node { trailCurrent->link = current->link; if (current == last) last = trailCurrent;
count--; delete current; //delete the node from the list } else cout << "The item to be deleted is not in the list." << endl; }//end else }//end else }//end deleteNode
circularLinkedList.h
#pragma once #include
using namespace std;
//Definition of the node
template
//*********************************************************** // Author: D.S. Malik // // This class specifies the members to implement an iterator // to a linked list. //***********************************************************
template
circularLinkedListIterator(nodeType
Type operator*(); //Function to overload the dereferencing operator *. //Postcondition: Returns the info contained in the node.
circularLinkedListIterator
bool operator==(const circularLinkedListIterator
bool operator!=(const circularLinkedListIterator
private: nodeType
template
template
template
template
template
template
//*********************************************************** // Author: D.S. Malik // // This class specifies the members to implement the basic // properties of a linked list. This is an abstract class. // We cannot instantiate an object of this class. //***********************************************************
template
void initializeList(); //Initialize the list to an empty state. //Postcondition: first = NULL, last = NULL, count = 0;
bool isEmptyList() const; //Function to determine whether the list is empty. //Postcondition: Returns true if the list is empty, otherwise // it returns false.
void print() const; //Function to output the data contained in each node. //Postcondition: none
int length() const; //Function to return the number of nodes in the list. //Postcondition: The value of count is returned.
void destroyList(); //Function to delete all the nodes from the list. //Postcondition: first = NULL, last = NULL, count = 0;
Type front() const; //Function to return the first element of the list. //Precondition: The list must exist and must not be empty. //Postcondition: If the list is empty, the program terminates; // otherwise, the first element of the list is returned.
Type back() const; //Function to return the last element of the list. //Precondition: The list must exist and must not be empty. //Postcondition: If the list is empty, the program // terminates; otherwise, the last // element of the list is returned.
virtual bool search(const Type& searchItem) const = 0; //Function to determine whether searchItem is in the list. //Postcondition: Returns true if searchItem is in the list, // otherwise the value false is returned.
virtual void insertFirst(const Type& newItem) = 0; //Function to insert newItem at the beginning of the list. //Postcondition: first points to the new list, newItem is // inserted at the beginning of the list, last points to // the last node in the list, and count is incremented by // 1.
virtual void insertLast(const Type& newItem) = 0; //Function to insert newItem at the end of the list. //Postcondition: first points to the new list, newItem is // inserted at the end of the list, last points to the // last node in the list, and count is incremented by 1.
virtual void deleteNode(const Type& deleteItem) = 0; //Function to delete deleteItem from the list. //Postcondition: If found, the node containing deleteItem is // deleted from the list. first points to the first node, // last points to the last node of the updated list, and // count is decremented by 1.
circularLinkedListIterator
circularLinkedListIterator
circularLinkedListType(); //default constructor //Initializes the list to an empty state. //Postcondition: first = NULL, last = NULL, count = 0;
circularLinkedListType(const circularLinkedListType
~circularLinkedListType(); //destructor //Deletes all the nodes from the list. //Postcondition: The list object is destroyed.
protected: int count; //variable to store the number of list elements // nodeType
private: void copyList(const circularLinkedListType
template
template
template
template
template
current = first; //set current so that it points to the first node while (current != last) //while more data to print { cout << current->info << ' '; current = current->link; } cout << current->info; }//end print
template
template
template
template
template
template
if (first != NULL) //if the list is nonempty, make it empty destroyList();
if (otherList.first == NULL) //otherList is empty { first = NULL; last = NULL; count = 0; } else { current = otherList.first; //current points to the list to be copied count = otherList.count;
//copy the first node first = new nodeType
//copy the remaining list while (current != otherList.first) { newNode = new nodeType
template
template
//overload the assignment operator template
Step by Step Solution
There are 3 Steps involved in it
Step: 1
Get Instant Access to Expert-Tailored Solutions
See step-by-step solutions with expert insights and AI powered tools for academic success
Step: 2
Step: 3
Ace Your Homework with AI
Get the answers you need in no time with our AI-driven, step-by-step assistance
Get Started