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

时间:2014-10-30 03:09:23

标签: c++ debugging linked-list queue bus

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

代码链接:

HEADER FILE

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 个答案:

答案 0 :(得分:0)

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