使用链表的动态队列//总线错误:10(C++)



嗨,我正在实现一个基于基本链表的动态Queue类,在运行测试时,我得到"总线错误:10"。我是使用终端(MAC OS X)的新手,我想得到一些帮助,找出我的代码有什么问题,或者我试图运行它的方式。它编译得很好。

代码链接:

头文件

CPP文件

测试代码:

//
//  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中。而不是相反。