您好我正在实现一个基于链接列表的基本动态队列类,当运行测试时,我得到"总线错误: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 ;
}
}
谢谢!
答案 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
中。不是相反。