Привет я реализую базовый динамический класс очереди на основе связанных списков и при запуске теста я получаю «ошибка шины: 10». Я новичок в использовании терминала (MAC OS X), и мне нужна помощь, чтобы найти, что не так с моим кодом или, может быть, как я пытаюсь его запустить. Это хорошо компилируется.
Ссылки на код:
ТЕСТОВЫЙ КОД:
//
// Test Program 1 for Dynamic Int Queue Class
//
#include <iostream> // for I/O facilities
#include "queue.h" // basic_int_queue declarations
using namespace std;
int main (int argc, char * const argv[]) {
bool OK = true ;
Queue q1 ;
if( ! q1.empty() ) OK = false ;
q1.enqueue(1);
if( q1.empty() ) OK = false ;
q1.enqueue(2);
q1.enqueue(3);
q1.enqueue(4);
if( q1.front() != 1 ) OK = false ;
q1.dequeue();
q1.dequeue();
q1.dequeue();
if( q1.front() != 4 ) OK = false ;
if( q1.dequeue() != 4 ) OK = false ;
if( ! q1.empty() ) OK = false ;
if( OK ){
cout << "GOOD" << endl ;
return 0 ;
}else{
cout << "BAD" << endl ;
return -1 ;
}
}
БЛАГОДАРЮ ВАС!
В вашем queue.cpp
файл enqueue
реализации, вам нужно выделить новый узел в куче, используя new
, Например, изменив следующие строки в вашем enqueue
node * temp;
temp->next = NULL;
temp->data = item;
в
node * temp = new node(item, NULL);
избавится от ошибки шины.
Кроме того, в конце вашего dequeue
реализация, вам нужно
delete temp;
до
return item;
В противном случае delete temp;
линия недоступна, и вы будете иметь утечки памяти.
И последнее, как правило, вы должны
#include "queue.h"
в вашем queuen.cpp
, А не наоборот.