отладка — Динамическая очередь с использованием связанного списка // ОШИБКА ШИНЫ: 10 (C ++)

Привет я реализую базовый динамический класс очереди на основе связанных списков и при запуске теста я получаю «ошибка шины: 10». Я новичок в использовании терминала (MAC OS X), и мне нужна помощь, чтобы найти, что не так с моим кодом или, может быть, как я пытаюсь его запустить. Это хорошо компилируется.

Ссылки на код:

ЗАГОЛОВОК ФАЙЛ

CPP FILE

ТЕСТОВЫЙ КОД:

//
//  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 ;
}
}

БЛАГОДАРЮ ВАС!

-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, А не наоборот.

0

Другие решения