嗨,我正在实现一个基于基本链表的动态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
中。而不是相反。