Кажется, я получаю сообщение «Ошибка сегментации: 11» всякий раз, когда я запускаю в программе какую-либо функцию (вставка и отображение, не могу сказать, делает ли это удаление, поскольку я не могу вставить). Я не совсем уверен, что это значит или где начать искать, чтобы это исправить. Любая помощь будет принята с благодарностью о том, с чего начать. Я понимаю, что это как-то связано с памятью, и то, что я смог найти, может означать, что что-то занимает слишком много памяти.
#include <iostream>
#include <cstring>
#include <cstdlib>
#include "priority_queue.h"
//#include <heap.h>
using namespace std;
struct node{
int priority;
int info;
struct node* link;
};
class PriorityQueue{
private:
node* front;
public:
void Priority_Queue(){
front = 0;
}
void insert(int item, int priority){
node* temp, *q;
temp = new node;
temp->info = item;
temp->priority = priority;
if(front == 0 || priority < front->priority){
temp ->link = front;
front = temp;
}
else{
q = front;
while(q->link != 0 && q->link->priority <= priority)
q = q->link;
temp->link = q->link;
q->link = temp;
}
}
void del(){
node* temp;
if(front == 0)
cout << "Underflow" << endl;
else{
temp = front;
cout << "Delete item is: " << temp->info << endl;
front = front->link;
free(temp);
}
}
void display(){
node* ptr;
ptr = front;
if(front == 0)
cout << "Queue is empty" << endl;
else{
cout << "Queue is: " << endl;
cout << "Priority Item" << endl;
while(ptr != 0){
cout << ptr->priority << endl;
ptr = ptr->link;
}
}
}
};
int main(){
int choice, item, priority;
PriorityQueue pq;
while(1){
cout << "1. Insert" << endl;
cout << "2. Delete" << endl;
cout << "3. Display" << endl;
cout << "4. Quit" << endl;
cout << "Enter Choice " << endl;
cin >> choice;
switch(choice){
case 1:
cout << "Input the item value to be added into the queue" << endl;
cin >> item;
cout << "Enter its priority " << endl;
cin >> priority;
pq.insert(item, priority);
break;
case 2:
pq.del();
break;
case 3:
pq.display();
break;
case 4:
break;
default:
cout << "That is not an option" << endl;
}
}
//while(choice != 4);
return 0;
}