SlideShare a Scribd company logo
I need help with implementing the priority queue data structure with a linked list implementation
and with modifying my code with a template. Make sure that the code has the required methods
to get the given test code in driver.cpp to work properly. I will provide the main cpp file and
what I have so far below. The code is in C++. Add comments to where you modified the code, so
I know what you did to change it. Thank you.
//////////////////////// driver.cpp /////////////////////////////
#include <iostream>
#include <string>
#include "stackLL.h"
#include "queueLL.h"
#include "priorityQueueLL.h"
using namespace std;
int main()
{
/////////////Test code for stack ///////////////
stackLL stk;
stk.push(5);
stk.push(13);
stk.push(7);
stk.push(3);
stk.push(2);
stk.push(11);
cout << "Popping: " << stk.pop() << endl;
cout << "Popping: " << stk.pop() << endl;
stk.push(17);
stk.push(19);
stk.push(23);
while (!stk.empty())
{
cout << "Popping: " << stk.pop() << endl;
}
// output order: 11,2,23,19,17,3,7,13,5
stackLL stkx;
stkx.push(5);
stkx.push(10);
stkx.push(15);
stkx.push(20);
stkx.push(25);
stkx.push(30);
stkx.insertAt(-100, 3);
stkx.insertAt(-200, 7);
stkx.insertAt(-300, 0);
//output order: -300,30,25,20,-100,15,10,5,-200
while (!stkx.empty())
cout << "Popping: " << stkx.pop() << endl;
///////////////////////////////////////
//////////Test code for queue ///////////
queueLL Q;
Q.enqueue(1);
Q.enqueue(2);
Q.enqueue(3);
cout << "Dequeuing: " << Q.dequeue() << endl; //1
cout << "Dequeuing: " << Q.dequeue() << endl; //2
Q.enqueue(4);
Q.enqueue(5);
//3 4 5
while (!Q.empty())
{
cout << "Dequeuing: " << Q.dequeue() << endl;
}
/////////////////////////////////////////
//////////Test code for priority queue/////
priorityQueueLL<int> pQueue;
const int SIZE = 20;
//insert a bunch of random numbers
for (int i = 0; i < SIZE; i++)
{
pQueue.insert(rand());
}
//pull them back out..
//They must come out in order from smallest to largest
while (!pQueue.empty())
{
cout << pQueue.extractMin() << endl;
}
priorityQueueLL<string> pqs;
pqs.insert("whale");
pqs.insert("snake");
pqs.insert("buffalo");
pqs.insert("elmo");
pqs.insert("fire");
pqs.insert("waffle");
//buffalo elmo fire snake waffle whale
while (!pqs.empty())
{
cout << pqs.extractMin() << endl;
}
///////////////////////////////////////////
//1) Template your queue class
//2) Add a decimate method to your queue class
queueLL<int> qx;
for (int i = 1; i <= 100; i++)
qx.enqueue(i);
//Eliminate every 10th item from list
//https://en.wikipedia.org/wiki/Decimation_(punishment)
qx.decimate();
//1 2 3 4 5 6 7 8 9 11 12 13 14 15 16 17 18 19 21 22... 98 99
while (!qx.empty())
cout << qx.dequeue() << endl;
queueLL<string> qy;
qy.enqueue("sparticus");
qy.enqueue("maximus");
qy.enqueue("killicus");
qy.enqueue("awesomeicus");
qy.enqueue("gannicus");
qy.enqueue("varro");
qy.enqueue("oenomous");
qy.enqueue("slayicus");
qy.enqueue("bladeicus");
qy.enqueue("ted");
qy.enqueue("smashicus");
qy.enqueue("mallicus");
qy.enqueue("wussicus");
qy.enqueue("wimpicus");
qy.enqueue("crixus");
qy.decimate();
//Everyone but Ted.
while (!qy.empty())
cout << qy.dequeue() << endl;
return 0;
}
//////////////////////// queueLL.h ///////////////////////////
#ifndef QUEUELL_H
#define QUEUELL_H
class queueLL
{
private:
//put what you need here...
public:
queueLL()
{}
~queueLL()
{}
//return true if empty, false if not
bool empty()
{}
//add item to back of queue
void enqueue(int x)
{}
//remove and return first item from queue
int dequeue()
{}
//For the final part of the test program, template this class
//and add a decimate method.
};
#endif
///////////////////////// queueLL.cpp //////////////////////////
#include "queueLL.h"
#include<iostream>
using namespace std;
class queueLL
{
private:
class node
{
public:
int data;
node* next;
node(int d, node* n = nullptr) : data(d), next(n) {}
};
node* head;
node* tail;
public:
queueLL() : head(nullptr), tail(nullptr) {}
~queueLL()
{
while (!empty())
{
dequeue();
}
}
bool empty()
{
return head == nullptr;
}
void enqueue(int x)
{
node* new_tail = new node(x);
if (empty())
{
head = new_tail;
}
else
{
tail->next = new_tail;
}
tail = new_tail;
}
int dequeue()
{
if (empty())
{
throw std::out_of_range("Queue is empty");
}
int ret = head->data;
node* old_head = head;
head = head->next;
if (head == nullptr)
{
tail = nullptr;
}
delete old_head;
return ret;
}
void decimate()
{
node* current = head;
node* prev = nullptr;
int i = 1;
while (current != nullptr)
{
if (i % 10 == 0)
{
if (prev == nullptr)
{
head = current->next;
}
else
{
prev->next = current->next;
}
node* next = current->next;
delete current;
current = next;
}
else
{
prev = current;
current = current->next;
}
++i;
}
tail = prev;
}
};
//////////////////////////// priorityQueueLL.h /////////////////////////////////
#ifndef PRIORITYQUEUELL_H
#define PRIORITYQUEUELL_H
template <class T>
class priorityQueueLL
{
private:
class node
{
public:
//put what you need here..
}
//add what you wish here
public:
priorityQueueLL()
{}
~priorityQueueLL()
{}
//return true if empty, false if not
bool empty()
{}
//add item
void insert(T x)
{}
//remove and return smallest item
T extractMin()
{}
};
#endif
///////////////////////////// priorityQueueLL.cpp ////////////////////////////////////
#include "priorityQueueLL.h"
#include<iostream>
using namespace std;
template <typename T>
class PriorityQueueLL {
private:
struct Node {
T data;
int priority;
Node* next;
Node(T d, int p) : data(d), priority(p), next(nullptr) {}
};
Node* head;
public:
PriorityQueueLL() : head(nullptr) {}
~PriorityQueueLL() {
while (head) {
Node* temp = head;
head = head->next;
delete temp;
}
}
void push(T data, int priority) {
Node* newNode = new Node(data, priority);
if (!head || priority > head->priority) {
newNode->next = head;
head = newNode;
}
else {
Node* curr = head;
while (curr->next && priority <= curr->next->priority) {
curr = curr->next;
}
newNode->next = curr->next;
curr->next = newNode;
}
}
void pop() {
if (!head) {
throw std::out_of_range("Priority queue is empty");
}
Node* temp = head;
head = head->next;
delete temp;
}
T top() const {
if (!head) {
throw std::out_of_range("Priority queue is empty");
}
return head->data;
}
bool empty() const {
return head == nullptr;
}
};

More Related Content

PDF
Ive posted 3 classes after the instruction that were given at star.pdf
PDF
Double linked list header file below for FYI#include iostream.pdf
PDF
double linked list header file code#include iostream#include.pdf
PDF
Write message.cpp and priorityq.cpp. The code in message.cpp and pri.pdf
PPTX
Priority queue in DSA
DOCX
Assg 11 Priority Queues and Queue ApplicationsCOSC 2336 S.docx
PPTX
The presention is about the queue data structure
DOCX
In Class AssignmetzCST280W13a-1.pdfCST 280 In-Class Pract.docx
Ive posted 3 classes after the instruction that were given at star.pdf
Double linked list header file below for FYI#include iostream.pdf
double linked list header file code#include iostream#include.pdf
Write message.cpp and priorityq.cpp. The code in message.cpp and pri.pdf
Priority queue in DSA
Assg 11 Priority Queues and Queue ApplicationsCOSC 2336 S.docx
The presention is about the queue data structure
In Class AssignmetzCST280W13a-1.pdfCST 280 In-Class Pract.docx

Similar to I need help with implementing the priority queue data structure with a.docx (20)

DOCX
EmptyCollectionException-java -- - Represents the situation in which.docx
PDF
Priorty queue
PDF
computer notes - Priority queue
PDF
double Skiplist code below#include iostream#include vector.pdf
PPTX
DS UNIT2QUEUES.pptx
PPT
GAC DS Priority Queue Presentation 2022.ppt
PPTX
PDF
Leetcode Problem Solution
PDF
Chapter VI Queues & Stacks.pdf algorithm data structur
PPT
Queues in C++ detailed explanation and examples .ppt
PDF
Implement the Queue ADT using array – based approach. Using C++ prog.pdf
PDF
LEC4-DS ALGO.pdf
PPT
Priority queues
PPTX
Data Structures and Agorithm: DS 09 Queue.pptx
PDF
Priority Queue
PPTX
Queue Data Structures Intro and Types of Queue
PPTX
My lectures circular queue
PPTX
Lecture 7 data structures and algorithms
DOCX
EmptyCollectionException-java -- - Represents the situation in which.docx
Priorty queue
computer notes - Priority queue
double Skiplist code below#include iostream#include vector.pdf
DS UNIT2QUEUES.pptx
GAC DS Priority Queue Presentation 2022.ppt
Leetcode Problem Solution
Chapter VI Queues & Stacks.pdf algorithm data structur
Queues in C++ detailed explanation and examples .ppt
Implement the Queue ADT using array – based approach. Using C++ prog.pdf
LEC4-DS ALGO.pdf
Priority queues
Data Structures and Agorithm: DS 09 Queue.pptx
Priority Queue
Queue Data Structures Intro and Types of Queue
My lectures circular queue
Lecture 7 data structures and algorithms

More from hendriciraida (20)

DOCX
In a recent annual report and related Global Responsibiity Report- Sta.docx
DOCX
In a nutshell- Social Darwinism is employed by quasi-scientists and po.docx
DOCX
In a modern economy- who controls the creation of money- Who profits f.docx
DOCX
In a 1-1-5 page document (APA format- 12-point font- double-spaced) an.docx
DOCX
In 2017 in the economy of Cortania- Consumption was $1500-00- Investme.docx
DOCX
In 1868- the accidental introduction into the United States of the cot.docx
DOCX
In 1950 the average year of education was 8 years- The standard deviat.docx
DOCX
Important- Python Program- No imports- Use Custom Functions if necessa.docx
DOCX
import java-io-IOException- import java-nio-file-Files- import java-ni.docx
DOCX
Impact on Taxes- You have a marginal tax rate of 22-- You suddenly rea.docx
DOCX
Immune complex is formed when antigen and antibody bind- Formation of.docx
DOCX
Imani and Doug were divorced on December 31-2022 - after 10 years of m.docx
DOCX
Iloginning rav materiala invantoing siding favimaceriala inventory Dif.docx
DOCX
ii) the 16000$ restumping fee iii- Ihe $2000 tor the new hot water sys.docx
DOCX
If you were living in Galveston at the time- how could you have used y.docx
DOCX
If the share price of Nostos- a New York-based shipping firm- rises fr.docx
DOCX
If the mean annual return for common stocks is 11-0- and the standard.docx
DOCX
If NADH donates a pair of electrons to the mitochondrial electron tran.docx
DOCX
If Molly's pension plan from Retirement Management Services included a.docx
DOCX
If a varlable Y supersedes a variable X- then X must be influencing Y.docx
In a recent annual report and related Global Responsibiity Report- Sta.docx
In a nutshell- Social Darwinism is employed by quasi-scientists and po.docx
In a modern economy- who controls the creation of money- Who profits f.docx
In a 1-1-5 page document (APA format- 12-point font- double-spaced) an.docx
In 2017 in the economy of Cortania- Consumption was $1500-00- Investme.docx
In 1868- the accidental introduction into the United States of the cot.docx
In 1950 the average year of education was 8 years- The standard deviat.docx
Important- Python Program- No imports- Use Custom Functions if necessa.docx
import java-io-IOException- import java-nio-file-Files- import java-ni.docx
Impact on Taxes- You have a marginal tax rate of 22-- You suddenly rea.docx
Immune complex is formed when antigen and antibody bind- Formation of.docx
Imani and Doug were divorced on December 31-2022 - after 10 years of m.docx
Iloginning rav materiala invantoing siding favimaceriala inventory Dif.docx
ii) the 16000$ restumping fee iii- Ihe $2000 tor the new hot water sys.docx
If you were living in Galveston at the time- how could you have used y.docx
If the share price of Nostos- a New York-based shipping firm- rises fr.docx
If the mean annual return for common stocks is 11-0- and the standard.docx
If NADH donates a pair of electrons to the mitochondrial electron tran.docx
If Molly's pension plan from Retirement Management Services included a.docx
If a varlable Y supersedes a variable X- then X must be influencing Y.docx

Recently uploaded (20)

PDF
ANTIBIOTICS.pptx.pdf………………… xxxxxxxxxxxxx
PDF
Pre independence Education in Inndia.pdf
PPTX
Pharmacology of Heart Failure /Pharmacotherapy of CHF
PDF
Black Hat USA 2025 - Micro ICS Summit - ICS/OT Threat Landscape
PDF
Anesthesia in Laparoscopic Surgery in India
PPTX
1st Inaugural Professorial Lecture held on 19th February 2020 (Governance and...
PPTX
Institutional Correction lecture only . . .
PPTX
Pharma ospi slides which help in ospi learning
PDF
FourierSeries-QuestionsWithAnswers(Part-A).pdf
PDF
Saundersa Comprehensive Review for the NCLEX-RN Examination.pdf
PDF
BÀI TẬP BỔ TRỢ 4 KỸ NĂNG TIẾNG ANH 9 GLOBAL SUCCESS - CẢ NĂM - BÁM SÁT FORM Đ...
PDF
Physiotherapy_for_Respiratory_and_Cardiac_Problems WEBBER.pdf
PPTX
school management -TNTEU- B.Ed., Semester II Unit 1.pptx
PPTX
Cell Structure & Organelles in detailed.
PDF
01-Introduction-to-Information-Management.pdf
PDF
Complications of Minimal Access Surgery at WLH
PDF
O5-L3 Freight Transport Ops (International) V1.pdf
PDF
TR - Agricultural Crops Production NC III.pdf
PDF
Computing-Curriculum for Schools in Ghana
PPTX
PPT- ENG7_QUARTER1_LESSON1_WEEK1. IMAGERY -DESCRIPTIONS pptx.pptx
ANTIBIOTICS.pptx.pdf………………… xxxxxxxxxxxxx
Pre independence Education in Inndia.pdf
Pharmacology of Heart Failure /Pharmacotherapy of CHF
Black Hat USA 2025 - Micro ICS Summit - ICS/OT Threat Landscape
Anesthesia in Laparoscopic Surgery in India
1st Inaugural Professorial Lecture held on 19th February 2020 (Governance and...
Institutional Correction lecture only . . .
Pharma ospi slides which help in ospi learning
FourierSeries-QuestionsWithAnswers(Part-A).pdf
Saundersa Comprehensive Review for the NCLEX-RN Examination.pdf
BÀI TẬP BỔ TRỢ 4 KỸ NĂNG TIẾNG ANH 9 GLOBAL SUCCESS - CẢ NĂM - BÁM SÁT FORM Đ...
Physiotherapy_for_Respiratory_and_Cardiac_Problems WEBBER.pdf
school management -TNTEU- B.Ed., Semester II Unit 1.pptx
Cell Structure & Organelles in detailed.
01-Introduction-to-Information-Management.pdf
Complications of Minimal Access Surgery at WLH
O5-L3 Freight Transport Ops (International) V1.pdf
TR - Agricultural Crops Production NC III.pdf
Computing-Curriculum for Schools in Ghana
PPT- ENG7_QUARTER1_LESSON1_WEEK1. IMAGERY -DESCRIPTIONS pptx.pptx

I need help with implementing the priority queue data structure with a.docx

  • 1. I need help with implementing the priority queue data structure with a linked list implementation and with modifying my code with a template. Make sure that the code has the required methods to get the given test code in driver.cpp to work properly. I will provide the main cpp file and what I have so far below. The code is in C++. Add comments to where you modified the code, so I know what you did to change it. Thank you. //////////////////////// driver.cpp ///////////////////////////// #include <iostream> #include <string> #include "stackLL.h" #include "queueLL.h" #include "priorityQueueLL.h" using namespace std; int main() { /////////////Test code for stack /////////////// stackLL stk; stk.push(5); stk.push(13); stk.push(7); stk.push(3); stk.push(2); stk.push(11); cout << "Popping: " << stk.pop() << endl; cout << "Popping: " << stk.pop() << endl; stk.push(17); stk.push(19); stk.push(23); while (!stk.empty()) { cout << "Popping: " << stk.pop() << endl; } // output order: 11,2,23,19,17,3,7,13,5 stackLL stkx;
  • 2. stkx.push(5); stkx.push(10); stkx.push(15); stkx.push(20); stkx.push(25); stkx.push(30); stkx.insertAt(-100, 3); stkx.insertAt(-200, 7); stkx.insertAt(-300, 0); //output order: -300,30,25,20,-100,15,10,5,-200 while (!stkx.empty()) cout << "Popping: " << stkx.pop() << endl; /////////////////////////////////////// //////////Test code for queue /////////// queueLL Q; Q.enqueue(1); Q.enqueue(2); Q.enqueue(3); cout << "Dequeuing: " << Q.dequeue() << endl; //1 cout << "Dequeuing: " << Q.dequeue() << endl; //2 Q.enqueue(4); Q.enqueue(5); //3 4 5 while (!Q.empty()) { cout << "Dequeuing: " << Q.dequeue() << endl; } ///////////////////////////////////////// //////////Test code for priority queue///// priorityQueueLL<int> pQueue; const int SIZE = 20; //insert a bunch of random numbers for (int i = 0; i < SIZE; i++)
  • 3. { pQueue.insert(rand()); } //pull them back out.. //They must come out in order from smallest to largest while (!pQueue.empty()) { cout << pQueue.extractMin() << endl; } priorityQueueLL<string> pqs; pqs.insert("whale"); pqs.insert("snake"); pqs.insert("buffalo"); pqs.insert("elmo"); pqs.insert("fire"); pqs.insert("waffle"); //buffalo elmo fire snake waffle whale while (!pqs.empty()) { cout << pqs.extractMin() << endl; } /////////////////////////////////////////// //1) Template your queue class //2) Add a decimate method to your queue class queueLL<int> qx; for (int i = 1; i <= 100; i++) qx.enqueue(i); //Eliminate every 10th item from list //https://en.wikipedia.org/wiki/Decimation_(punishment) qx.decimate(); //1 2 3 4 5 6 7 8 9 11 12 13 14 15 16 17 18 19 21 22... 98 99 while (!qx.empty()) cout << qx.dequeue() << endl; queueLL<string> qy; qy.enqueue("sparticus");
  • 4. qy.enqueue("maximus"); qy.enqueue("killicus"); qy.enqueue("awesomeicus"); qy.enqueue("gannicus"); qy.enqueue("varro"); qy.enqueue("oenomous"); qy.enqueue("slayicus"); qy.enqueue("bladeicus"); qy.enqueue("ted"); qy.enqueue("smashicus"); qy.enqueue("mallicus"); qy.enqueue("wussicus"); qy.enqueue("wimpicus"); qy.enqueue("crixus"); qy.decimate(); //Everyone but Ted. while (!qy.empty()) cout << qy.dequeue() << endl; return 0; } //////////////////////// queueLL.h /////////////////////////// #ifndef QUEUELL_H #define QUEUELL_H class queueLL { private: //put what you need here... public: queueLL() {} ~queueLL() {} //return true if empty, false if not bool empty() {}
  • 5. //add item to back of queue void enqueue(int x) {} //remove and return first item from queue int dequeue() {} //For the final part of the test program, template this class //and add a decimate method. }; #endif ///////////////////////// queueLL.cpp ////////////////////////// #include "queueLL.h" #include<iostream> using namespace std; class queueLL { private: class node { public: int data; node* next; node(int d, node* n = nullptr) : data(d), next(n) {} }; node* head; node* tail; public: queueLL() : head(nullptr), tail(nullptr) {} ~queueLL() { while (!empty()) { dequeue(); } } bool empty() {
  • 6. return head == nullptr; } void enqueue(int x) { node* new_tail = new node(x); if (empty()) { head = new_tail; } else { tail->next = new_tail; } tail = new_tail; } int dequeue() { if (empty()) { throw std::out_of_range("Queue is empty"); } int ret = head->data; node* old_head = head; head = head->next; if (head == nullptr) { tail = nullptr; } delete old_head; return ret; } void decimate() { node* current = head; node* prev = nullptr; int i = 1; while (current != nullptr) { if (i % 10 == 0) { if (prev == nullptr) { head = current->next;
  • 7. } else { prev->next = current->next; } node* next = current->next; delete current; current = next; } else { prev = current; current = current->next; } ++i; } tail = prev; } }; //////////////////////////// priorityQueueLL.h ///////////////////////////////// #ifndef PRIORITYQUEUELL_H #define PRIORITYQUEUELL_H template <class T> class priorityQueueLL { private: class node { public: //put what you need here.. } //add what you wish here public: priorityQueueLL() {} ~priorityQueueLL() {}
  • 8. //return true if empty, false if not bool empty() {} //add item void insert(T x) {} //remove and return smallest item T extractMin() {} }; #endif ///////////////////////////// priorityQueueLL.cpp //////////////////////////////////// #include "priorityQueueLL.h" #include<iostream> using namespace std; template <typename T> class PriorityQueueLL { private: struct Node { T data; int priority; Node* next; Node(T d, int p) : data(d), priority(p), next(nullptr) {} }; Node* head; public: PriorityQueueLL() : head(nullptr) {} ~PriorityQueueLL() { while (head) { Node* temp = head; head = head->next; delete temp; } } void push(T data, int priority) { Node* newNode = new Node(data, priority); if (!head || priority > head->priority) { newNode->next = head;
  • 9. head = newNode; } else { Node* curr = head; while (curr->next && priority <= curr->next->priority) { curr = curr->next; } newNode->next = curr->next; curr->next = newNode; } } void pop() { if (!head) { throw std::out_of_range("Priority queue is empty"); } Node* temp = head; head = head->next; delete temp; } T top() const { if (!head) { throw std::out_of_range("Priority queue is empty"); } return head->data; } bool empty() const { return head == nullptr; } };