【发布时间】:2022-01-22 07:14:16
【问题描述】:
我是数据结构的新手,一直在尝试实现以下代码,但无法使其工作。我不完全理解我在做什么所以需要一些帮助,我正在使用链表和类创建一个优先级队列。将年龄作为输入并按降序显示所有年龄值。这是代码。
#include <iostream>
using namespace std;
class Node
{
private:
int age;
Node* next;
public:
int getAge() {
return this->age;
}
void setAge(int age) {
this->age = age;
}
Node* getNext() {
return this->next;
}
Node* setNext(Node* next) {
this->next = next;
}
};
class Priority_Queue
{
private:
Node* front;
Node* rear;
public:
Priority_Queue()
{
front = NULL;
rear = NULL;
}
void enqueue(int x)
{
if (front == NULL && rear == NULL) {
Node* newNode = new Node();
newNode->setAge(x);
newNode->setNext(NULL);
}
else if (front != NULL && front->getAge() < x) {
Node* newNode = new Node();
newNode->setAge(x);
newNode->setNext(rear);
front = newNode;
}
else if (front != NULL && front->getAge() > x) {
Node* newNode = new Node();
newNode->setAge(x);
newNode->setNext(NULL);
rear = newNode;
}
}
void dequeue()
{
if (front == NULL)
cout << "Can't remove from an empty queue!" << endl;
else{
int x = front->getAge();
Node* p = front;
front = front->getNext();
delete p;
cout << "Deleted Age is " << x << endl;
}
}
void display()
{
Node* ptr;
ptr = rear;
if (front == NULL)
cout << "Queue is empty\n";
else
{
cout << "Queue is :\n";
while (ptr != NULL)
{
cout << ptr->getAge() << endl;
ptr = ptr->getNext();
}
}
}
};
int main()
{
int c, p;
Priority_Queue pq;
cout << "\nWelcome to Patient information system" << endl;
cout << "\Enter Your choice of the activity" << endl;
do
{
cout << "1.Insert\n";
cout << "2.Delete\n";
cout << "3.Display\n";
cout << "4.Exit\n";
cout << "Enter your choice : ";
cin >> c;
switch (c)
{
case 1:
cout << "Input the age value to be added in the queue : ";
cin >> p;
pq.enqueue(p);
break;
case 2:
pq.dequeue();
break;
case 3:
pq.display();
break;
case 4:
break;
default:
cout << "Wrong choice\n";
}
} while (c != 4);
cout << endl;
return 0;
}
【问题讨论】:
-
这段代码有什么问题?你有什么问题?
标签: c++ linked-list priority-queue